ハッスルサーバーで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とかコアサーバーなんかだと上記でも転送するんだけど、ハッスルサーバーの場合、

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と、スラッシュをエスケープすることで問題解決。ハッスルサーバーって厳しいのね。

www.hustle.ne.jp