3

我的问题如下:为了保持脚本的顺序,我总是在 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

4

2 回答 2

6

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


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

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

于 2012-07-15T17:53:12.493 回答
1

对此唯一可能的答案是,您完全错了。

抱歉 :) 问题出在键盘和椅子之间。现在,如果您能提出可重现的错误,我将全部收回。

于 2012-07-15T16:52:12.320 回答