Search code examples
phpcopy-pastegedit

Why does pasting a line break the code if writing out the same line by hand works fine?


Here are two versions of a line in a php file:

First version:

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

Second version:

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

Although they look identical, the first version results in a PHP Parse error: syntax error, unexpected T_STRING, whereas the second version works fine. The difference between the two is that the first version was pasted in and modified whereas the second version was written out by hand entirely. What's going on here?

Notes: The line was copied from a text file encoded in UTF-8 and pasted into another UTF-8 text file. All operations done within gedit, both files written by me in gedit.


Solution

  • When I copied & pasted your first line into my text editor and turned on the "show invisible characters" option, it looked like this:

    enter image description here

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

    Notice the between the ] and the ===.

    Your second line of code showed perfectly clean.

    Many times you will pick up stray invisible characters when you copy & paste text from websites. However, I do not know what keyboard combination will reproduce this from scratch.

    Further experimentation reveals this invisible character as "non-ASCII"... the BBEdit text editor simply calls them "gremlins", and even has a "zap gremlins" function.