这个问题已被问到,但我不知道如何在我的情况下解决这个问题。我得到以下php错误:
PHP消息:PHP警告:preg_match():分隔符不能是......第227行的字母数字或反斜杠
第227行如下:
if (preg_match($Match, $_SERVER['HTTP_USER_AGENT']))
功能:
$OSList = array (
'Windows 3.11' => 'Win16',
'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
'Windows 98' => '(Windows 98)|(Win98)',
'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
'Windows Server 2003' => '(Windows NT 5.2)',
'Windows Vista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 7.0)',
'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
'Windows ME' => 'Windows ME',
'Open BSD' => 'OpenBSD',
'Sun OS' => 'SunOS',
'Linux' => '(Linux)|(X11)',
'Mac OS' => '(Mac_PowerPC)|(Macintosh)',
'QNX' => 'QNX',
'BeOS' => 'BeOS',
'OS/2' => 'OS/2'
);
foreach($OSList as $CurrOS=>$Match)
{
if (preg_match($Match, $_SERVER['HTTP_USER_AGENT']))
{
break;
}
}
答案 0 :(得分:0)
确保对任何需要逃避的事物进行适当的逃脱。逃避
OS/2 to OS\/2
7.0 to 7\.0
etc.
。 /? *等等对于preg都是特殊的,所以你不应该在你的模式中使用它们,除非你逃脱它们或当你想要使用它们的“特殊能力”
更新:必须把它放在代码块中才能看到转义;)
答案 1 :(得分:0)
使用PCRE功能时,需要使用模式 由分隔符括起来。分隔符可以是任何非字母数字, 非反斜杠,非空白字符。
经常使用的分隔符是正斜杠(/),哈希符号(#)和 波浪(〜)。以下是有效分隔的所有示例 图案。
/foo bar/
+php+ %[a-zA-Z0-9_-]%
#^[^0-9]$#