Manipuler les chaînes
Pourquoi manipuler les chaînes ?
On manipule du texte tout le temps. Majuscules, remplacements, texte tronqué, nettoyage d'espaces...
PHP a des dizaines de fonctions pour les chaînes. Cette leçon couvre les plus utiles.
Longueur et changement de casse
Compter les caractères et changer la capitalisation :
$texte = "Bonjour le Monde";
echo strlen($texte); // 16 — nombre de caractères (espaces inclus)
echo strtolower($texte); // bonjour le monde — tout en minuscules
echo strtoupper($texte); // BONJOUR LE MONDE — tout en majuscules
echo ucfirst("bonjour"); // Bonjour — première lettre en majuscule
echo ucwords("bonjour le monde"); // Bonjour Le Monde — chaque mot en majuscule
16 bonjour le monde BONJOUR LE MONDE Bonjour Bonjour Le Monde
Exemple concret : l'utilisateur tape "marie", "MARIE" ou "mArIe". ucfirst(strtolower($nom)) donne toujours "Marie".
Chercher et remplacer
Remplacer un mot, vérifier si une chaîne contient un mot — PHP a tout ça.
$phrase = "J'aime le café et le café au lait.";
// str_replace(chercher, remplacer par, dans quoi)
echo str_replace("café", "thé", $phrase);
// J'aime le thé et le thé au lait. (TOUTES les occurrences remplacées)
// str_contains — PHP 8+ — la phrase contient-elle ce mot ?
if (str_contains($phrase, "café")) {
echo "Café trouvé dans la phrase !";
}
// strpos — à quelle position se trouve le mot ? (0 = premier caractère)
$position = strpos($phrase, "café");
echo $position; // 11 — le mot commence à la position 11
// str_starts_with et str_ends_with — PHP 8+
str_starts_with($phrase, "J'aime"); // true — commence par "J'aime"
str_ends_with($phrase, "lait."); // true — se termine par "lait."
Exemple : censurer des mots dans un blog. str_replace(["mot1", "mot2"], "***", $contenu) remplace tout d'un coup. Tu peux passer un tableau de mots.
Piège avec strpos() : si le mot est au début (position 0), la fonction retourne 0. En PHP, 0 est "faux" dans un if. Utilise strpos() !== false, pas juste if (strpos(...)). C'est pour ça que str_contains() est plus pratique en PHP 8+.
Extraire une partie d'une chaîne
substr() extrait un morceau. Tu précises où commencer et combien de caractères prendre.
$texte = "Développement web";
// 012345678... (les positions commencent à 0)
// substr(chaîne, position de début, nombre de caractères à prendre)
echo substr($texte, 0, 4); // "Déve" — 4 caractères depuis le début
echo substr($texte, -3); // "web" — les 3 derniers caractères
Usage courant : tronquer un texte long pour un aperçu d'article.
function apercu($texte, $max = 150) {
if (strlen($texte) <= $max) {
return $texte; // texte assez court, on garde tout
}
return substr($texte, 0, $max) . "..."; // on coupe et on ajoute "..."
}
$article = "Ceci est un très long article de blog qui continue encore et encore...";
echo apercu($article, 30);
// Ceci est un très long articl...
Nettoyer et formater
Deux fonctions essentielles avec des données de formulaires :
// trim() supprime les espaces en début ET en fin de chaîne
// Indispensable pour nettoyer les saisies de formulaire
$saisie = " Marie "; // l'utilisateur a mis des espaces par inadvertance
echo trim($saisie); // "Marie" — propre !
// ltrim() — supprime uniquement les espaces à gauche
// rtrim() — supprime uniquement les espaces à droite
// sprintf() formate une chaîne avec des "cases" à remplir
// %s = une chaîne (string), %d = un entier, %.2f = un décimal avec 2 chiffres après la virgule
$prix = 9.5;
echo sprintf("Prix : %.2f €", $prix);
// Prix : 9.50 €
$prenom = "Marie";
$messages = 3;
echo sprintf("Bonjour %s, tu as %d nouveau(x) message(s).", $prenom, $messages);
// Bonjour Marie, tu as 3 nouveau(x) message(s).
sprintf() construit une chaîne avec des emplacements. %s = texte, %d = entier, %.2f = décimal à 2 chiffres.
Exploser et assembler
Deux fonctions pour transformer des données :
// explode — découpe une chaîne en tableau selon un séparateur
// Pratique pour traiter des données séparées par des virgules, des espaces...
$tags = "php,html,css,javascript";
$tableau = explode(",", $tags);
// Résultat : ["php", "html", "css", "javascript"]
foreach ($tableau as $tag) {
echo "<span class='tag'>$tag</span> ";
}
// implode — fait l'inverse : assemble un tableau en chaîne avec un séparateur
$fruits = ["pomme", "banane", "cerise"];
echo implode(" | ", $fruits); // pomme | banane | cerise
echo implode(", ", $fruits); // pomme, banane, cerise
pomme | banane | cerise
explode() et implode() s'utilisent souvent ensemble. Tu reçois une chaîne séparée par des virgules, tu la découpes en tableau, tu la réassembles pour l'afficher.
strlen()— longueur d'une chaînestrtolower()/strtoupper()— tout en minuscules / majusculesucfirst()— première lettre en majuscule,ucwords()— chaque motstr_replace(chercher, remplacer, texte)— remplacer toutes les occurrencesstr_contains()— vérifier si une chaîne en contient une autre (PHP 8+)substr(texte, début, longueur)— extraire un morceautrim()— supprimer les espaces en début et fin (indispensable sur les formulaires)sprintf()— formater une chaîne avec des emplacements (%s,%d,%.2f)explode(séparateur, chaîne)→ tableau,implode(séparateur, tableau)→ chaîne