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

时间:2012-07-15 16:46:36

标签: php

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

if( ! isset( $_GET['user'] ) || ! isset( $_GET['user'] ) )
   ...

虽然一切看起来都是正确的,但这会产生“Unexpected T_STRING ...”等错误。然后我将行更改为:

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 ...

您可以在此处下载文件:http://geardev.de/test.zip

2 个答案:

答案 0 :(得分:4)

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

<小时/> 修改
\xC2A0是UTF-8编码方式U+00A0non-breaking space)。这可能来自浏览器,PDF或高级文本编辑器的复制和粘贴,或者键盘上的 Shift + Space 映射到NBSP。 p>

有人抱怨Netbeans将NBSP随机插入他们的代码中,但我怀疑这是因为用户在输入空格时意外地持有 Shift

答案 1 :(得分:1)

唯一可能的答案就是你错了。

抱歉:)问题出在键盘和椅子之间。现在,如果你能够提出一个可重现的错误,我会把它全部收回来。