这是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中编写的。
答案 0 :(得分:5)
您已经复制了UTF-8引号,PHP无法解析这些引号。删除引号并将其替换为ASCII等效项(即键入它们)。
有关ASCII与UTF-8引号的更多信息,请参阅http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
答案 1 :(得分:3)
当我复制&将第一行粘贴到我的文本编辑器中并打开“show invisible characters”选项,它看起来像这样:
if ($projet['sourceDonnees']•=== (string)$CONSTANTS['sourceDonnees_saisie']) {
请注意•
和]
之间的===
。
您的第二行代码显示完全干净。
很多时候,当你复制和复制时,你会拾取流浪的隐形字符。从网站粘贴文字。但是,我不知道哪种键盘组合会从头开始重现。
进一步的实验将这个不可见的字符显示为“非ASCII”...... BBEdit 文本编辑器只是将它们称为“gremlins”,甚至还有一个“zap gremlins”函数。
答案 2 :(得分:0)
unexpected T_STRING
通常是您的引号或刻度线问题。您复制的代码中的'
是UTF-8,可能是PHP无法解析的引用版本,例如我们在SO上用于内联代码的反引号。尝试将它们更改为常规单引号,它可能会解决您的问题。
如果不是这样,请确保在功能结束时没有错过分号。这可能会导致同样的错误。