0

なぜこれがポップアップするのか誰かが知っていますか?これを使用して、ユーザーエージェントに基づいてユーザーをリダイレクトしようとしています。この警告は、ユーザーエージェントが検索ボットの場合に表示されます。また、Windows XPMSIE8ユーザーエージェントが誤ってリダイレクトされています。

「警告:preg_match()[function.preg-match]:36行目の/.../getos.phpの不明な修飾子'c'」

function getOS($userAgent) {
  $oses = array (
    'iPhone' => '(iPhone)',
    'iPad' => 'iPad',
    'Android' => 'Android',
    'Windows 3.11' => 'Win16',
    'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', // Use regular expressions as value to identify operating system
    'Windows 98' => '(Windows 98)|(Win98)',
    'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
    'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
    'Windows 2003' => '(Windows NT 5.2)',
    'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)',
    'Windows 7' => '(Windows NT 6.1)|(Windows 7)',
    'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
    'Windows ME' => 'Windows ME',
    'Blackberry' => 'Blackberry',
    'Open BSD'=>'OpenBSD',
    'Sun OS'=>'SunOS',
    'Linux'=>'(Linux)|(X11)',
    'Macintosh'=>'(Mac_PowerPC)|(Macintosh)',
    'QNX'=>'QNX',
    'BeOS'=>'BeOS',
    'OS2'=>'OS2',
    'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp/cat)|(msnbot)|(ia_archiver)'
  );
  //'Safari' => '(Safari)',
  foreach($oses as $os=>$pattern){ // Loop through $oses array
    // Use regular expressions to check operating system type
    if(preg_match("/".$pattern."/i", $userAgent)) { // Check if a value in $oses array matches current user agent.<---------Line 36
      return $os; // Operating system was matched so return $oses key
    }
  }
  return 'Unknown'; // Cannot find operating system so return Unknown
}

$operatingsystem = getOS($_SERVER['HTTP_USER_AGENT']);
4

1 に答える 1

7

あなたのSearch Botエントリは(Slurp/cat)それにあります。は/正規表現の終わりとしてカウントされており、その後cはエラーが発生します。

(Slurp\/cat)問題を解決します。

于 2011-09-27T03:00:06.770 に答える