4.2.5.1 Syntaxe
4.2.5 Les chaînes de caractères
4.2 Les types
4 Référence
Manuel PHP
. Guillemets simples . Guillemets doubles ->Syntaxe Heredoc . Traitement des variables dans les chaînes . Accès aux caractères d'une chaîne
|
4.2.5.1.3 Syntaxe Heredoc
Un autre moyen de délimiter les chaînes est d'utiliser
la syntaxe dite "
Heredoc
"
(en français, documentation ici): <<<,
suivi d'un identifiant arbitraire, puis de la chaîne. Cette
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 étiquettes
PHP
: il ne
doit contenir uniquement que des caractères alpha-numériques,
et des soulignés ("_"), et enfin, commencer par un
caractère alphabétique ou un souligné.
Attention |
Il est très important de noter que la ligne qui contient
l'identifiant de fermeture ne doit contenir aucun autre
caractère, hormis, éventuellement, un point-virgule
;
.
Cela signifie notamment que l'identifiant ne doit
pas être indenté, et qu'il n'y a aucun caractère
blanc entre le retour à la ligne et l'identifiant,
ou bien entre l'identifiant et le
;
.
Le plus dur est peut être qu'il ne faut pas qu'il y ait
un retour à la ligne ((
\r
) à la fin de cette
ligne, mais seulement un retour chariot (
\n
).
Puisque Microsoft Windows utilise la séquence
\r\n
comme terminaison de ligne,
la syntaxe
heredoc
risque de ne pas fonctionner là. Cependant,
la plupart des éditeurs
PHP
fournissent une sauvegarde
au format UNIX.
|
La syntaxe
Heredoc
se comporte exactement comme une chaîne à
guillemets doubles, sans les guillemets doubles. Cela signifie
que vous n'avez pas à échapper les guillemets (simples ou doubles)
dans cette syntaxe. Les variables sont remplacées par leur valeur, et
le même soin doit leur être apporté que dans les chaînes
à guillemets doubles.
Exemple de chaîne HereDoc |
<?php $str = <<<EOD Exemple de chaîne s'étalant sur plusieurs lignes avec la syntaxe heredoc EOD; /* Exemple plus complexe, avec des variables. */ class foo { var $foo; var $bar; function foo() { $this->foo = 'Foo'; $this->bar = array('Bar1', 'Bar2', 'Bar3'); } } $foo = new foo(); $name = 'MonNom'; echo <<<EOT Mon nom est "$name". J'affiche des $foo->foo. Maintenant, j'affiche un {$foo->bar[1]}. Ceci se traduit par un 'A' majuscule: \x41 EOT; ?>
|
Note |
Le support
Here doc
a été ajouté en
PHP
4.
|
|