2014-03-01 78 views
0

我感到困惑(并且与正则表达式不兼容)。php没有符号正则表达式允许“&”和“+”

我(在我的PHP文件):

if (!preg_match ("/^[a-zA-Z\s]+$/",$string)) { 
      $valid = False; 
} 

这是假设只允许字母和空格,然而,当有字符串中是一个“&”或“+”它允许。

任何人都可以帮助我吗?

+0

'else $ valid = true'? – juanrpozo

+1

'$ string'从哪里来? –

+1

请注意,“\ s”不只是一个空格,它是任何空格字符。除非您尝试跨多行匹配,否则您可能需要使用^ [a-zA-Z] + $。 – CAustin

回答

-1

巨人巨大humungo次在这里的黑暗,但我会猜$string = $_GET['test'];和你所访问喜欢的东西:

  • http://example.com/regex.php?test=Fail+
  • http://example.com/regex.php?test=FAIL&

等等上。在这种情况下,请记住+被解码到一个空间,该空间允许使用\s。并且&划定参数,所以如果你var_dump($string)不会出现。

0

您是否通过回显它来检查字符串是否实际包含“+”或“&”。

如果测试在这个网站正则表达式:http://www.phpliveregex.com/ 不匹配+或&,所以你的正则表达式是正确的,只是看看你的输入。

相关问题