Leçon 10 / 12
Leçon 10 · Partie 2 — Aller plus loin

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 :

PHP
$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
Résultat
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.

PHP
$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.

PHP
$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.

PHP
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 :

PHP
// 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 :

PHP
// 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
Résultat (implode)
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.

// À retenir
  • strlen() — longueur d'une chaîne
  • strtolower() / strtoupper() — tout en minuscules / majuscules
  • ucfirst() — première lettre en majuscule, ucwords() — chaque mot
  • str_replace(chercher, remplacer, texte) — remplacer toutes les occurrences
  • str_contains() — vérifier si une chaîne en contient une autre (PHP 8+)
  • substr(texte, début, longueur) — extraire un morceau
  • trim() — 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