Les chaînes de caractères sont des séquences de caractères de un octet (256 caractères possibles). PHP n'a pas encore de support natif d'Unicode.
Les chaînes de caractères sont avec les tableaux un des types de données le plus manipulé dans les scripts.
Il faut savoir utiliser les bons guillemets (simples ou doubles) suivant les traitements que l'on veut faire ou ne pas faire sur une chaîne.

Il y a 3 façons pour inclure une chaîne de caractères comme valeur littérale dans un script :

Chacune des solutions différe dans la façon dont elle gére les caractères spéciaux et l'interpolation de variables.

Les guillemets simples

C'est la façon la plus simple et la moins "coûteuse" pour entourer une chaîne de caractères.

Exemple :
$hello = 'Bonjour tout le monde';

Pour inclure un guillemet simple dans la chaîne (apostrophe), nous devons le protéger (ou l'échapper) avec un backslash (\).

Exemple :
$hello = 'Bonjour tout l\'monde';

Si un backslash doit apparaître dans la chaîne nous devons le doubler pour le protéger. Il n'est pas possible d'échapper d'autres caractères que l'apostrophe et le backslash dans une chaînes entourées de guillemets simples, et un backslash placé devant n'importe quel autre caractère sera considéré tout simplement comme un backslash.

Les guillemets doubles

Une chaîne de caractères peut être entourée avec des guillemets doubles.

Exemple :
$hello = "Bonjour tout le monde";

La différence entre les guillemets doubles et simples est importante car dans les chaînes entourées de guillemets doubles :

Par exemple, dans le code suivant :

$prenom = 'François';
$nom = 'Piat';
$personne = "$prenom $nom";

la variable $personne contiendra la chaîne de caractère François Piat.

Les séquences d'échappement suivante sont interprétée :

\n
: provoque un passage à une nouvelle ligne (linefeed, LF ou 0x0A (10) en ASCII)
\r
: provoque un retour à la ligne(carriage return, CR ou 0x0D (13) en ASCII)
\t
: provoque une tabulation horizontale (HT ou 0x09 (9) en ASCII)
\\
: permet d'afficher un backslash
\$
: permet d'afficher un caractère $ dans une chaîne entourée par des guillemets doubles
\"
: permet d'afficher un guillemet double dans une chaîne entourée par des guillemets doubles
\{
: permet d'afficher un accolade ouvrante entourée par des guillemets doubles
\}
: permet d'afficher un accolade fermante entourée par des guillemets doubles
\[
: permet d'afficher un crochet ouvrant entourée par des guillemets doubles
\]
: permet d'afficher un crochet fermant entourée par des guillemets doubles
Exemple : guillemets simples et guillemets doubles

La syntaxe heredoc

La syntaxe heredoc commence par <<<, suivi d'un identifiant arbitraire, puis de la chaîne de caractères. La séquence se termine par l'identifiant initial, placé en premier sur une nouvelle ligne.

L'identifiant utilisé doit suivre les mêmes règles que les pour le nommage des variables PHP : il ne doit contenir que des caractères alpha-numériques ou _, et commencer par un caractère alphabétique ou _.

Les séquences d'échappement sont interprétées, et les variables remplacées par leur valeur. Les guillemets simples ou doubles dans la chaîne n'ont besoin d'aucune protection particulière.

Exemple : syntaxe heredoc

La syntaxe heredoc peut être utilisée avec facilité pour stocker des chaînes de caractères représentant du code HTML. A l'intérieur de la chaîne, le formattage éventuel du code (saut de ligne, indentation) sera gardé lors de l'affichage du code HTML dans la page résultat, rendant ainsi le code de cette page plus facilement lisible. Les guillemets (simples ou doubles) employés pour entourer les valeurs des attributs ne poseront pas de problème de protection.

Exemple : syntaxe heredoc

La syntaxe heredoc est plus coûteuse à traiter que les autres façons d'inclure des chaînes comme valeur littérale dans les scripts. A mon avis elle doit être évitée si possible.

Saut de ligne

Toutes les syntaxes (guillemets simples ou doubles, et heredoc) permettent de mettre des sauts de lignes dans les chaînes de caractères.

Exemple : sauts de ligne