如果用手写出相同的行,粘贴一行就会破坏代码吗?

时间:2013-03-22 14:49:23

标签: php copy-paste gedit

这是php文件中一行的两个版本:

第一个版本:

if ($projet['sourceDonnees'] === (string)$CONSTANTS['sourceDonnees_saisie']) {

第二版:

if ($projet['sourceDonnees'] === (string)$CONSTANTS['sourceDonnees_saisie']) {

虽然它们看起来相同,但第一个版本会产生PHP Parse error: syntax error, unexpected T_STRING,而第二个版本可以正常工作。两者之间的区别在于第一个版本是粘贴并修改的,而第二个版本是完全用手写 。这是怎么回事?

备注:该行是从以UTF-8编码的文本文件中复制并粘贴到另一个UTF-8文本文件中。所有操作都在gedit中完成,这两个文件都是由我在gedit中编写的。

3 个答案:

答案 0 :(得分:5)

您已经复制了UTF-8引号,PHP无法解析这些引号。删除引号并将其替换为ASCII等效项(即键入它们)。

有关ASCII与UTF-8引号的更多信息,请参阅http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html

答案 1 :(得分:3)

当我复制&将第一行粘贴到我的文本编辑器中并打开“show invisible characters”选项,它看起来像这样:

enter image description here

if ($projet['sourceDonnees']•=== (string)$CONSTANTS['sourceDonnees_saisie']) {

请注意]之间的===

您的第二行代码显示完全干净。

很多时候,当你复制和复制时,你会拾取流浪的隐形字符。从网站粘贴文字。但是,我不知道哪种键盘组合会从头开始重现。

进一步的实验将这个不可见的字符显示为“非ASCII”...... BBEdit 文本编辑器只是将它们称为“gremlins”,甚至还有一个“zap gremlins”函数。

答案 2 :(得分:0)

unexpected T_STRING通常是您的引号或刻度线问题。您复制的代码中的'是UTF-8,可能是PHP无法解析的引用版本,例如我们在SO上用于内联代码的反引号。尝试将它们更改为常规单引号,它可能会解决您的问题。

如果不是这样,请确保在功能结束时没有错过分号。这可能会导致同样的错误。