PHP String
Apprenez comment fonctionnent les chaînes en PHP - création, guillemets simples vs doubles, heredoc/nowdoc, séquences d'échappement, concaténation et fonctions de chaînes.
Une chaîne de caractères en PHP est une séquence de caractères - du texte tel qu'un nom, une phrase ou un document HTML entier. Les chaînes sont l'un des types de données les plus utilisés en PHP, et le langage est livré avec une grande bibliothèque de fonctions pour les rechercher, les remplacer, les formater et les transformer.
Cette page explique comment créer des chaînes, la différence entre guillemets simples et doubles, les séquences d'échappement, la jointure de chaînes et les fonctions de chaînes les plus utilisées.
Créer une chaîne
Vous pouvez écrire une chaîne littérale en utilisant des guillemets simples (') ou des guillemets doubles ("):
<?php
$greeting = 'Hello';
$name = "World";
echo $greeting; // Hello
?>Pour du texte plus long ou plus complexe, PHP propose également la syntaxe heredoc et nowdoc, décrites ci-dessous.
Guillemets simples vs. doubles
C'est la distinction la plus importante à apprendre tôt. Les chaînes entre guillemets doubles analysent les variables et les séquences d'échappement ; les chaînes entre guillemets simples ne le font pas.
<?php
$name = "Alice";
echo "Hello, $name\n"; // Hello, Alice (then a newline)
echo 'Hello, $name\n'; // Hello, $name\n (printed literally)
?>Dans la version entre guillemets doubles, $name est remplacé par sa valeur et \n devient un vrai saut de ligne. Dans la version entre guillemets simples, les deux sont affichés exactement tels qu'ils ont été saisis.
Les guillemets simples sont légèrement plus rapides et plus sûrs lorsque vous ne souhaitez pas d'interpolation, donc utilisez-les pour les littéraux simples et passez aux guillemets doubles uniquement lorsque vous avez besoin d'une variable ou d'une séquence d'échappement dans la chaîne.
Interpolation avec accolades
Lorsqu'une variable est suivie de caractères qui pourraient faire partie de son nom, entourez-la d'{} afin que PHP sache où le nom se termine :
<?php
$fruit = "apple";
echo "I ate two {$fruit}s\n"; // I ate two apples
?>Séquences d'échappement
Les séquences d'échappement n'ont de sens qu'à l'intérieur des chaînes entre guillemets doubles (et heredoc) :
| Séquence | Signification |
|---|---|
\n | Nouvelle ligne |
\t | Tabulation |
\\ | Barre oblique inverse |
\" | Guillemet double |
\$ | Signe dollar (empêche l'interpolation) |
<?php
echo "Line one\nLine two\n";
echo "Price: \$10\n"; // Price: $10
?>Heredoc et nowdoc
Pour le texte multiligne, heredoc se comporte comme une chaîne entre guillemets doubles (les variables sont analysées) et nowdoc se comporte comme une chaîne entre guillemets simples (rien n'est analysé).
<?php
$name = "Sam";
// Heredoc - interpolates $name
echo <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo "\n---\n";
// Nowdoc - prints $name literally
echo <<<'EOT'
Dear $name,
This is shown verbatim.
EOT;
?>L'identifiant de fermeture (EOT ici) doit commencer au début d'une ligne.
Concaténation
Joignez des chaînes avec l'opérateur point (.). L'opérateur .= ajoute à une chaîne existante :
<?php
$first = "John";
$last = "Doe";
$full = $first . " " . $last;
echo $full . "\n"; // John Doe
$message = "Hello";
$message .= ", world!";
echo $message . "\n"; // Hello, world!
?>Consultez PHP Operators pour la liste complète des opérateurs de chaînes et arithmétiques.
Fonctions de chaînes courantes
La bibliothèque standard de PHP inclut des dizaines de fonctions de chaînes. Voici celles que vous utiliserez le plus :
<?php
$text = "Hello, World";
echo strlen($text) . "\n"; // 12 - length in bytes
echo strtoupper($text) . "\n"; // HELLO, WORLD
echo strtolower($text) . "\n"; // hello, world
echo str_replace("World", "PHP", $text) . "\n"; // Hello, PHP
echo strpos($text, "World") . "\n"; // 7 - index of first match
echo substr($text, 0, 5) . "\n"; // Hello
echo trim(" padded ") . "|\n"; // padded|
?>| Fonction | Ce qu'elle fait |
|---|---|
strlen() | Retourne la longueur de la chaîne |
strtoupper() / strtolower() | Change la casse |
str_replace() | Remplace toutes les occurrences d'une sous-chaîne |
strpos() | Trouve la position d'une sous-chaîne (retourne false si absente) |
substr() | Extrait une partie d'une chaîne |
trim() | Supprime les espaces aux deux extrémités |
explode() | Divise une chaîne en un array |
implode() | Joint un array en une chaîne |
Formatage avec sprintf()
Lorsque vous avez besoin d'un contrôle précis sur la façon dont les valeurs sont placées dans une chaîne - rembourrage, formatage des nombres, alignement - utilisez sprintf(). Elle retourne une chaîne formatée (et printf() l'affiche directement) :
<?php
$name = "Alice";
$score = 92.5;
$line = sprintf("%s scored %.1f%%", $name, $score);
echo $line . "\n"; // Alice scored 92.5%
?>L'espace réservé %s insère une chaîne, %d un entier, et %.1f un flottant arrondi à une décimale.
Accéder aux caractères individuels
Une chaîne peut être indexée comme un array, en commençant à 0 :
<?php
$word = "PHP";
echo $word[0] . "\n"; // P
echo $word[2] . "\n"; // P
?>Où aller ensuite
- PHP Strings - un tutoriel plus approfondi sur le travail avec du texte en PHP.
- PHP Data Types - comment les chaînes s'intègrent aux entiers, flottants, arrays et plus encore.
- PHP Functions - écrivez vos propres fonctions réutilisables.