Php 带有空格的if子句中出现意外的T_字符串

Php 带有空格的if子句中出现意外的T_字符串,php,Php,我的问题如下:为了在脚本中保持秩序,我总是在if语句中放很多空格,如下所示: if( ! isset( $_GET['user'] ) || ! isset( $_GET['user'] ) ) ... 有时,尽管一切似乎都是正确的,但这会产生诸如“意外的T_字符串…”等错误。然后我将行更改为: if(!isset($_GET['user'])||!isset($_GET['user'])) ... 保存文件,重新插入空格,再次保存文件,一切正常。你知道这是什么原因吗?这可能是P

我的问题如下:为了在脚本中保持秩序,我总是在if语句中放很多空格,如下所示:

if( ! isset( $_GET['user'] ) || ! isset( $_GET['user'] ) )
   ...
有时,尽管一切似乎都是正确的,但这会产生诸如“意外的T_字符串…”等错误。然后我将行更改为:

if(!isset($_GET['user'])||!isset($_GET['user']))
   ...
保存文件,重新插入空格,再次保存文件,一切正常。你知道这是什么原因吗?这可能是PHP解析器的错误吗

(这不是特别的陈述,它发生在许多这样的空格中,包括陈述)

编辑:我刚刚设法将文件恢复到不工作时的状态,这正是产生错误的代码:

if(! isset( $_GET['user'] ) || ! isset( $_GET['parent'] ) )
我还更改了序列中的每个字符,它似乎是
|
之间的空格

错误消息显示:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ')' in ...

你可以在这里下载文件:

唯一可能的答案是你错了


对不起:)问题在键盘和椅子之间。现在,如果你能找出一个可重现的错误,我就把它全部收回。

这看起来像是一个字符编码问题。我不确定您使用的确切字符编码是否会导致这种情况,但当您使用十六进制编辑器打开PHP文件时,您正确识别为导致这种情况的空格字符实际上是一个多字节字符
\xC2
&
\xA0
。所有其他空格字符应为
\x20


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


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

这两行都是有效的;在这方面,空白不影响任何东西。“不时”是什么意思?这正是问题所在-两行都是有效的,空格不应影响任何内容。但确实如此。我现在还不能确定一个模式,它似乎是随机发生的。你能给我们看一个产生这种情况的代码行的例子吗?以及确切的错误消息?i、 当解析器遇到意外的T_字符串时,它期望什么?上面的代码产生了一个错误,直到我删除并重新插入空格。消息是:
Parse error:syntax error,意外的T_字符串,在…
中应为“,”或“)”。问题是它不可复制,它完全是随机发生的。奇怪,但这是从哪里来的?你知道产生这个角色的组合键吗?不过,它看起来像是Netbeans中的一个空间。