带有空格的 if 子句中出现意外的 T_STRING

Rud*_*olf 3 php

我的问题如下:为了保持脚本的顺序,我总是在 if 语句中放置大量空格,如下所示:

if( ! isset( $_GET['user'] ) || ! isset( $_GET['user'] ) )
   ...
Run Code Online (Sandbox Code Playgroud)

有时,尽管一切似乎都是正确的,但这会产生“意外的 T_STRING...”等错误。然后我将行更改为:

if(!isset($_GET['user'])||!isset($_GET['user']))
   ...
Run Code Online (Sandbox Code Playgroud)

保存文件,重新插入空格,再次保存文件,一切正常。任何想法可能导致这种情况?这可能是PHP解析器的错误吗?

(这不是专门的这个语句,它发生在许多这样的空格中——包括语句)

编辑:我只是设法将文件恢复到它不起作用时,这是产生错误的确切代码:

if(! isset( $_GET['user'] ) || ! isset( $_GET['parent'] ) )
Run Code Online (Sandbox Code Playgroud)

我也改变了每个字符的顺序,这似乎是之间的空间||!

错误消息说:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ')' in ...
Run Code Online (Sandbox Code Playgroud)

你可以在这里下载文件:http : //geardev.de/test.zip

Lès*_*sté 6

这看起来像是一个字符编码问题。我不确定您使用的确切字符编码是什么导致了这种情况,但是当您使用十六进制编辑器打开 PHP 文件时,您正确识别为导致这种情况的空格字符实际上是一个多字节字符\xC2\xA0。所有其他空格字符都\x20应该是: 在此处输入图片说明


编辑:
\xC2A0是 UTF-8 编码方式U+00A0不间断空格)。这可能来自从浏览器、PDF 或高级文本编辑器的复制和粘贴,或者您的键盘可能已Shift+Space映射到 NBSP。

Netbeans 的人曾抱怨将 NBSP 随机插入到他们的代码中,但我怀疑这是由于用户Shift在键入空格时不小心按住了。