Les chaînes PHP : un guide approfondi
Plongez dans le monde des chaînes PHP : création, guillemets, concaténation, fonctions intégrées, séquences d'échappement et syntaxes Heredoc/Nowdoc.
Une chaîne est une séquence de caractères utilisée pour stocker et manipuler du texte — des noms, des messages, du HTML, du JSON, le contenu de fichiers, et bien plus encore. Les chaînes sont l'un des types de données fondamentaux de PHP, et presque tous les programmes PHP les utilisent. Ce guide explique comment créer des chaînes, la différence essentielle entre guillemets simples et doubles, la concaténation, l'accès aux caractères individuels, les fonctions intégrées les plus utiles, les séquences d'échappement, ainsi que les syntaxes multi-lignes Heredoc et Nowdoc — avec des exemples exécutables tout au long.
Qu'est-ce qu'une chaîne PHP ?
Une chaîne est du texte entouré de guillemets et stocké dans une variable. PHP vous offre quatre façons de l'écrire : guillemets simples, guillemets doubles, Heredoc et Nowdoc. Les deux styles de guillemets sont ceux que vous utiliserez le plus souvent :
<?php
$single = 'Hello World';
$double = "Hello World";
echo $single; // Hello World
echo "\n";
echo $double; // Hello WorldLes chaînes n'ont pas de limite de longueur fixe autre que la mémoire disponible, donc une chaîne peut contenir un seul caractère ou un document entier.
Guillemets simples vs guillemets doubles
C'est la distinction la plus importante à apprendre tôt, car choisir le mauvais style de guillemets est une source courante de bugs. Les guillemets doubles analysent les séquences d'échappement et interpolent les variables ; les guillemets simples traitent presque tout de façon littérale.
<?php
$name = 'Alice';
echo "Hello $name\n"; // Hello Alice (variable + newline parsed)
echo 'Hello $name\n'; // Hello $name\n (printed literally)Lorsque la variable touche d'autres caractères, entourez-la d'accolades afin que PHP sache où le nom se termine :
<?php
$item = 'book';
echo "I bought 3 {$item}s\n"; // I bought 3 booksLes guillemets simples sont légèrement plus rapides et plus sûrs lorsque vous n'avez pas besoin d'interpolation — préférez-les pour le texte fixe. Utilisez les guillemets doubles (ou Heredoc) quand vous devez incorporer des variables ou des séquences d'échappement.
Concaténation de chaînes
Assembler des chaînes en une seule s'appelle la concaténation. PHP utilise le point (.) comme opérateur, et .= ajoute à une chaîne existante :
<?php
$first = 'Hello';
$last = 'World';
$greeting = $first . ' ' . $last;
echo $greeting; // Hello World
$greeting .= '!';
echo "\n" . $greeting; // Hello World!Notez que PHP utilise . pour la concaténation, pas + — utiliser + sur deux chaînes tente une addition numérique et ce n'est presque jamais ce que vous souhaitez.
Accès aux caractères
Une chaîne se comporte comme un tableau de caractères. Vous pouvez lire n'importe quel caractère par son index à base zéro en utilisant des crochets :
<?php
$word = 'PHP';
echo $word[0]; // P
echo $word[2]; // P
echo $word[-1]; // P (negative index counts from the end)Pour obtenir la longueur de la chaîne, utilisez strlen :
<?php
echo strlen('Hello World'); // 11 (the space counts)Fonctions de chaînes courantes
PHP est livré avec une riche bibliothèque de fonctions de chaînes. Voici celles que vous utiliserez le plus souvent, chacune renvoyant vers un chapitre dédié :
| Fonction | Utilité |
|---|---|
strlen | Longueur d'une chaîne (en octets) |
strpos | Position de la première occurrence d'une sous-chaîne |
str_replace | Remplacer toutes les occurrences d'une sous-chaîne |
strtoupper / strtolower | Modifier la casse |
substr | Extraire une partie d'une chaîne |
trim | Supprimer les espaces aux deux extrémités |
explode / implode | Convertir entre chaînes et tableaux |
sprintf | Formater une chaîne à partir d'un modèle |
Un aperçu rapide :
<?php
$text = ' The quick brown fox ';
echo strlen($text); // 23
echo "\n";
echo strpos($text, 'quick'); // 6
echo "\n";
echo str_replace('quick', 'slow', trim($text)); // The slow brown fox
echo "\n";
echo strtoupper(trim($text)); // THE QUICK BROWN FOX
echo "\n";
echo substr(trim($text), 0, 3); // Thesprintf construit une chaîne à partir d'un modèle, ce qui est pratique pour les nombres et le remplissage :
<?php
$price = 9.5;
echo sprintf('Total: $%.2f', $price); // Total: $9.50Travailler avec Unicode
Les fonctions standard comme strlen et strpos comptent des octets, pas des caractères. Pour du texte contenant des lettres accentuées, des emoji ou des scripts non-latins, utilisez les équivalents multi-octets mb_* de l'extension mbstring pour que les caractères multi-octets soient comptés correctement :
<?php
$word = 'café';
echo strlen($word); // 5 (é is 2 bytes in UTF-8)
echo "\n";
echo mb_strlen($word); // 4 (correct character count)Séquences d'échappement
Dans les chaînes entre guillemets doubles, un antislash commence une séquence d'échappement — un moyen d'écrire des caractères difficiles à saisir ou qui seraient autrement analysés. Les plus courants :
| Séquence | Signification |
|---|---|
\n | Saut de ligne |
\t | Tabulation |
\" | Guillemet double littéral |
\\ | Antislash littéral |
\$ | Signe dollar littéral (supprime l'interpolation) |
<?php
echo "Line 1\nLine 2"; // prints on two lines
echo "\n";
echo "Price: \$5"; // Price: $5
echo "\n";
echo "She said \"hello\""; // She said "hello"Les chaînes entre guillemets simples reconnaissent uniquement \' (un guillemet littéral) et \\ ; tout le reste, y compris \n, est affiché tel quel.
Heredoc et Nowdoc
Lorsque vous avez besoin d'une longue chaîne multi-lignes, Heredoc et Nowdoc sont plus propres que d'échapper les sauts de ligne manuellement.
Heredoc se comporte comme une chaîne entre guillemets doubles : les variables sont interpolées et les séquences d'échappement fonctionnent. Ouvrez-le avec <<< suivi d'un identifiant, et fermez-le avec ce même identifiant sur sa propre ligne :
<?php
$name = 'Alice';
$message = <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear Alice,
// Welcome aboard!Nowdoc se comporte comme une chaîne entre guillemets simples — pas d'interpolation, pas d'analyse des séquences d'échappement. La seule différence syntaxique est que l'identifiant d'ouverture est entouré de guillemets simples :
<?php
$name = 'Alice';
$message = <<<'EOT'
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear $name,
// Welcome aboard!Utilisez Heredoc pour la sortie modélisée (e-mails, blocs HTML) et Nowdoc lorsque vous voulez que le texte reste exactement tel qu'il est écrit.
Résumé
Les chaînes PHP sont le fondement du travail avec du texte. Les points essentiels à retenir :
- Utilisez les guillemets simples pour le texte littéral et les guillemets doubles (ou Heredoc) quand vous avez besoin d'interpolation de variables ou de séquences d'échappement.
- Concaténez avec l'opérateur
., pas+. - Utilisez les fonctions intégrées comme
strlen,substr,str_replaceetexplodeplutôt que de les réinventer. - Utilisez les fonctions
mb_*chaque fois que le texte peut contenir des caractères non-ASCII.
Ensuite, apprenez à afficher des chaînes et d'autres valeurs avec echo et print, ou explorez les nombres et les tableaux PHP.