0

任何人都有一個想法,爲什麼這是彈出?試圖使用它來基於用戶代理重定向用戶。當用戶代理搜索機器人時出現此警告。此外,Windows XP MSIE 8用戶代理正被錯誤地重定向。PHP警告:preg_match()[function.preg-match]:未知的修飾符

「警告:的preg_match()[function.preg匹配]:在 /.../getos.php未知的修飾的 'C' 上線36」

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']); 
+0

向我們展示觸發警告 – tttony

回答

7

Search Bot其中有(Slurp/cat)/正在計爲正則表達式的結尾,並且隨後的c會導致該錯誤。

(Slurp\/cat)將解決問題。

+0

gah的'$ pattern'內容,打我吧;) – esqew

+0

只是注意到了,謝謝!仍錯誤地重定向Windows XP MSIE 8。 – SquidRoe

相關問題