我在制作IF OR语句时遇到问题,在这种情况下,如果我使用||则无关紧要或“或”。
我现在有:
if($email == '' || (!filter_var($email, FILTER_VALIDATE_EMAIL)))
我收到错误PHP Fatal error: Call to undefined function \xa0() in
如果我更改为if($email == '' || !filter_var($email, FILTER_VALIDATE_EMAIL))
我收到错误PHP Parse error: syntax error, unexpected '!' in
答案 0 :(得分:6)
此错误消息Call to undefined function \xa0() in
看起来很像编码类型是您问题的根源。 \xA0
字符是一个bugger:
\xa0 is actually non-breaking space in Latin1 (ISO 8859-1), also
chr(160). You should replace it with a space. When .encode('utf-8'), it
will encode the unicode to utf-8, that means every unicode could be
represented by 1 to 4 bytes.Jun 12, 2012
来自Python: Removing \xa0 from string?
问题是你无法看到它,因为它是一个特殊的空白&#34;很可能是在一个奇怪的IDE或网站的 Ctrl + C / Ctrl + V 中插入的。< / p>
这应该从您的文件中删除它们并将其替换为good whitespaces
:
file_put_contents('your-script-cleaned.php',
str_replace('\\x0a',
' ',
file_get_contents('your-script-original.php')))
IDE搜索&amp;替换也可以做到这一点。
答案 1 :(得分:0)
您的代码在||
后面有一个不间断的空格字符(\u00A0
)。
另外PHP很愚蠢,认为该字节是一个可行的标识符,因此它认为
<nbsp>(!filter_var($email, FILTER_VALIDATE_EMAIL))
是一个函数调用,与
不同myfunction(!filter_var($email, FILTER_VALIDATE_EMAIL))
,而
<nbsp>!filter_var($email, FILTER_VALIDATE_EMAIL)
是语法错误(因为myfunction!filter_var($email, FILTER_VALIDATE_EMAIL)
),因为!
不能用作二元运算符。)
在键盘布局中输入这些不间断的空格非常常见,您必须使用 Alt Gr 键入管道字符|
,例如我所使用的标准芬兰布局使用。这是因为你在击中空格键时仍然按下 Alt Gr ;在许多布局 Alt Gr + 将产生一个不间断的空间。 (请注意,我自己在答案中使用了不间断的空格来制作空格键;)
一个好的编辑器可以将这样的用法标记为语法错误,或者您可以配置编辑器以突出显示这些错误。