ハッスルサーバーでpreg_match関数使用時のエスケープについて

PCサイトに携帯電話(ガラケー)でアクセスしたときに転送するプログラムをPHPで組んだ。組み込んだソースは下記のとおり。

<?php
	$page_m='モバイルサイトのURL';
	$agent=$_SERVER['HTTP_USER_AGENT'];
	if (preg_match("/UP.Browser/[3-5]/",$agent) || 
		preg_match("/J-PHONE//",$agent) || 
		preg_match("/DoCoMo//",$agent) 
		 && !(preg_match("/(Win|Mac|Linux|FreeBSD|OS/2|Solaris)/i",$agent)) ||
		preg_match("/UP.Browser/",$agent) ||
		preg_match("/^Vodafone/",$agent) ||
		preg_match("/^SoftBank/",$agent) ||
		preg_match("/^MOT-/",$agent) ||
		preg_match("/DDIPOCKET;/",$agent) ||
		preg_match("/WILLCOM;/",$agent) ||
		preg_match("/L-mode///",$agent)) 
	{
		header("Location: $page_m");
	}else{
	}//end if
?>

XREAとかCOREサーバーなんかだと上記でも転送するんだけど、ハッスルサーバーの場合、


Warning: preg_match() [function.preg-match]: Unknown modifier '2' in /home/USER/public/www/aaa.net/bbb.html on line 7

Warning: Cannot modify header information - headers already sent by (output started at /home/USER/public/www/aaa.net/bbb.html:7) in /home/USER/public/www/aaa.net/bbb.html on line 17

みたいなエラーが・・・ いろいろググったら単純にエスケープが足りなかったみたい。

エラーの原因は下記の箇所だったんだけど、

 
&& !(preg_match("/(Win|Mac|Linux|FreeBSD|OS/2|Solaris)/i",$agent)) ||
 

この中のOS/2の箇所をOS/2と、スラッシュをエスケープすることで問題解決。ハッスルサーバーって厳しいのね。