Ghid depanare PHP: rezolvarea erorii «Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING»

Chiar și după ani buni de programare în PHP, este posibil să întâlnești mesaje de eroare mai rar întâlnite sau aparent criptice afișate de parserul limbajului. Una dintre aceste erori de sintaxă este:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /cale/catre/fisier.php on line 123

Ce înseamnă «T_CONSTANT_ENCAPSED_STRING»?

În terminologia parserului PHP, tokenul T_CONSTANT_ENCAPSED_STRING reprezintă un șir de caractere (string) delimitat de ghilimele duble (") sau simple ('). Atunci când interpretorul întâlnește un astfel de șir într-o poziție neașteptată din cod, înseamnă de cele mai multe ori că există o neconcordanță în delimitarea sau concatenarea șirurilor.

Cauza principală a problemei

Această eroare apare cel mai frecvent în instrucțiunile echo sau print, din cauza nepotrivirii ghilimelelor sau a lipsei operatorului de concatenare (punctul .). Să analizăm un exemplu concret de cod care a provocat această eroare:

[php]
echo ‘‘.$temp[‘titlu’].’

„;
[/php]

Unde este greșeala?

Dacă analizăm cu atenție linia de mai sus:

  • Șirul principal este deschis la început cu apostrof (ghilimea simplă: ').
  • Variabila $temp['titlu'] este concatenată corect folosind operatorul punct și apostrof.
  • La sfârșitul liniei, instrucțiunea se închide însă cu ghilimele duble (";), în loc de ghilimea simplă (';).

Pentru parserul PHP, nepotrivirea tipului de ghilimea înseamnă că șirul a rămas neînchis corect, iar caracterele următoare sunt interpretate greșit ca un șir constant plasat incorect.

Soluția: închiderea consecventă a șirului

Corectarea este simplă: asigură-te că folosești același tip de delimitator la deschidere și la închidere sau scapă (escape) ghilimelele interioare dacă este necesar:

[php]
// Varianta corectă cu ghilimele simple:
echo ‘‘ . $temp[‘titlu’] . ‘

‘;
[/php]

O verificare atentă a fiecărui fragment concatenat rezolvă instant această problemă de sintaxă.

Lasă un comentariu