【问题标题】:PHP Warning: preg_match() [function.preg-match]: Unknown modifier [duplicate]PHP 警告:preg_match() [function.preg-match]:未知修饰符 [重复]
【发布时间】:2011-09-27 02:56:21
【问题描述】:

有人知道为什么会出现这种情况吗?尝试使用它来基于用户代理重定向用户。当用户代理是搜索机器人时会出现此警告。 Windows XP MSIE 8 用户代理也被错误地重定向。

“警告:preg_match() [function.preg-match]: 未知修饰符 'c' in /.../getos.php 第 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']);

【问题讨论】:

  • 向我们展示触发警告的$pattern 内容

标签: php internet-explorer internet-explorer-8 windows-xp googlebot


【解决方案1】:

您的Search Bot 条目中包含(Slurp/cat)/ 被算作正则表达式的结尾,随后的 c 导致错误。

(Slurp\/cat) 将解决问题。

【讨论】:

  • 刚刚注意到,谢谢!仍然错误地重定向 Windows XP MSIE 8。
猜你喜欢
  • 2011-03-20
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多