W3docs

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équenceSignification
\nNouvelle ligne
\tTabulation
\\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|
?>
FonctionCe 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.

Pratique

Pratique
En PHP, laquelle des fonctions suivantes peut être utilisée pour retourner une chaîne formatée ?
En PHP, laquelle des fonctions suivantes peut être utilisée pour retourner une chaîne formatée ?
Was this page helpful?