2013-04-25 35 views
-5

这个问题已被问到,但我不知道如何解决这个问题在我的情况。我得到了下面的PHP errror: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

看:http://stackoverflow.com/questions/7660545/delimiter-must-not-be-alphanumeric-or-backslash-and-preg-match?rq=1下一次尝试使用Google第一... – Ihsan 2013-04-25 08:28:31

+0

没有任何问题的代码的努力。你基本上是要求为你完成代码。请提出具体问题。按提交之前,搜索它。 – hakre 2013-04-25 08:28:54

回答

0

确保做正确的逃避任何需要逃跑的东西。所以逃跑

OS/2 to OS\/2 
7.0 to 7\.0 
etc. 

。 /? *等等都是特殊的preg,所以你不应该在你的模式中使用它们,除非你逃脱它们或当你想使用他们的“特殊权力”

更新:必须把它放在代码块中才能看到转义; )

0

PHP Manual - Delimiters

当使用PCRE函数,它要求该图案是通过 定界符包围。分隔符可以是任何非字母数字的非反斜杠字符,非空白字符。

经常使用的分隔符是正斜杠(/),散列符号(#)和 (〜)。以下是有效分隔的 模式的所有示例。

/foo bar/ 
+php+ %[a-zA-Z0-9_-]% 
#^[^0-9]$# 
相关问题