MePh- > Mon blog

Les bases de PHP - Chapitre 6

Le Vendredi 12 Mai 2006 à 17:35


Dans un langage comme PHP, à la fois non typé et destiné à construire du contenu, les opérations sur les chaînes de caractères sont fondamentales. PHP dispose de multiples fonctions agissant sur les chaînes (comparaison, remplacement, expressions régulières, transformations en tableau) mais le langage permet aussi de procéder à des manipulations directement dans les chaînes elles-mêmes.

Pour délivrer le maximum de performances, PHP distingue les chaînes statiques (entre apostrophes) des chaînes qu’on pourrait qualifier de dynamiques (entre guillemets) et qui feront l’objet d’un traitement particulier.
Il est possible, la plupart du temps, de se contenter de chaînes statiques, c’est le cas notamment pour le nom des fichiers à inclure ou pour certains messages.

Dans de nombreuses situations, la chaîne attendue consiste cependant en une agglomération de portions statiques, de valeurs stockées dans les variables ou encore de caractères spéciaux.

Vous pouvez bien entendu créer une telle chaîne en concaténant les différents éléments (c’est le rôle de l’opérateur «. »).

$str= 'Ceci est une' . $superbe[index1][index2] .
'chaînes de ' . $caractères . ' !';

Nous agglomérons, dans notre exemple, outre des chaînes statiques, un élément de tableau, à savoir la valeur d’une variable. On imagine que cette notation peut devenir très lourde si les chaînes à créer sont quelque peu complexes.
Avec les chaînes dynamiques, PHP offre une alternative très confortable. Il devient effectivement possible d’intégrer directement dans les chaînes la valeur des variables PHP.

$str = "Le nombre de colis est stock !";

Ici, le contenu de la variable $stock sera substitué dans la chaîne. Comme certaines situations peuvent être difficiles à interpréter, PHP utilise aussi les accolades pour délimiter le nom de la variable ou l’expression à substituer.

$nb = 3;
$stock[$nb] = 12;
// sans accolades, seules les substitutions simples
// vont être reconnues
print "Le nombre de colis de la semaine $nb est $stock[$nb]";
// avec des accolades il est possible
// de délimiter plus précisement la variable
print "Les données pour la semaine ${$nb}[2004]
sont disponibles";
$stock[$nb]['lundi'] = 34;
// voir de substituer des variables plus complexes
// noter que l'accolade ouvrante est placée avant le "$".
print "Le nombre de colis reçus le lundi de la semanie $nb
est {$stock[$nb]['lundi']}";


Enfin ce type de chaînes permet aussi d’insérer des caractères spéciaux comme la tabulation (« t » ou le retour chariot (« n »). Notre exemple précédent peut donc s’écrire :

$str= "Ceci est une ${superbe[index1][index2]}
chaînes de $caractères !n"


Enfin dernière possibilité, inspirée des shells Unix et surtout utile pour écrire des chaînes longues, l’utilisation de l’opérateur « <<< ». La syntaxe est un peu particulière :

$variable = <<<FIN
bonjour, $encore plus
de
bonjour
FIN;
// Suite du code PHP


Les possibilités en termes de caractères d’échappement et de remplacement sont identiques à celles disponibles pour les chaînes entre guillemets. Il faut noter que le mot qui délimite la fin du texte, dans notre exemple FIN, est libre et ne doit naturellement pas être utilisé dans la chaîne. Par habitude, on utilise souvent EOF ou EOT (respectivement end of file et end of text). Enfin, ce délimiteur doit apparaître seul, suivi d’une virgule sur la dernière ligne (pas d’espace ou d’autre caractère parasite).