Pourquoi utiliser cette fonction ?
T’as déjà eu envie de jouer les stylistes avec du texte sur ton site ? Couper, tailler, ajuster pour que tout soit pile poil comme tu veux ? Si tu touches un peu à PHP, je parie que oui. Aujourd’hui, on va parler d’un outil hyper pratique pour ça, substr
. Et non, on ne va pas se contenter des exemples barbants qu’on voit partout. Allez, c’est parti !
C’est quoi substr ?
En gros, substr
c’est le couteau suisse de PHP pour tout ce qui est découpe de chaîne de caractères. Tu veux récupérer une partie précise d’un texte, substr
est là pour toi. La syntaxe de base, c’est :
substr(string $string, int $start, ?int $length = null): string
$string
: Le texte que tu veux découper.$start
: Le point de départ de ta découpe. Si c’est positif, tu pars du début. Si c’est négatif, surprise, tu pars de la fin !$length
(optionnel) : La longueur de la partie que tu veux garder. Si tu ne mets rien, ou si c’est négatif, PHP prend tout jusqu’à la fin depuis ton point de départ.
Comment utiliser substr ?
Des exemples classiques
Ok, les bases, c’est fait. Maintenant, entrons dans le vif du sujet avec des exemples qui sortent de l’ordinaire.
Exemple 1
Imagine que tu as une chaîne de caractères hyper longue, comme une citation de film ou une blague. Mais toi, ce que tu veux, c’est juste teaser la fin.
$blague = "C'est l'histoire d'un pingouin qui respirait par les fesses. Un jour, il s'assoit et il meurt."; echo substr($blague, -10); // " il meurt."
Avec -10
comme $start
et sans $length
, substr
te donne les 10 derniers caractères. C’est pas mal pour donner envie de connaître le début, non ?
Exemple 2
Tu stockes des numéros de carte bancaire (en toute sécurité, évidemment) mais tu veux afficher juste les 4 derniers chiffres pour rassurer ton utilisateur.
$numeroCB = "1234567890123456"; echo "Les 4 derniers chiffres de ta carte sont : " . substr($numeroCB, -4); // "Les 4 derniers chiffres de ta carte sont : 3456"
Simple et efficace. L’utilisateur voit que tu gères, mais sans trop en montrer.
Exemple 3
Tu veux créer un système de code secret où seul un morceau du message est visible, et le reste est remplacé par des étoiles. Un peu comme un mot de passe.
$messageSecret = "Le trésor est caché dans le jardin"; echo substr($messageSecret, 0, 10) . str_repeat("*", strlen($messageSecret) - 10); // "Le trésor ************* dans le jardin"
Avec ça, tu montres juste le début et la fin, le reste reste mystérieux. Parfait pour jouer à l’espion !
Créer une fonction intelligente avec substr
Je te propose de créer une fonction un peu spéciale qui va utiliser substr
pour faire quelque chose de pas banal. On va créer une fonction qui génère un résumé intelligent d’un texte. L’idée ? Prendre un long texte et en extraire une version courte, en conservant le début et la fin pour garder le contexte et la conclusion.
Pourquoi c’est utile ?
Dans un monde où tout le monde court après le temps, offrir un résumé rapide peut être hyper pratique. Que ce soit pour un article, un email ou une description, donner un aperçu rapide tout en invitant à plonger plus profondément si intéressé, c’est top.
La fonction de résumé intelligent
function resumeIntelligent($texte, $longueur = 100) { // On s'assure que le texte est plus long que la longueur souhaitée if (strlen($texte) > $longueur) { // On prend le début $debut = substr($texte, 0, $longueur / 2); // On prend la fin $fin = substr($texte, -$longueur / 2); // On les combine avec des points de suspension pour indiquer qu'il manque du contenu return $debut . " [...] " . $fin; } else { // Si le texte est plus court que la longueur souhaitée, on le retourne tel quel return $texte; } }
Mise en pratique
Imaginons que tu as un texte un peu long, et tu veux en faire un résumé de 100 caractères pour donner envie de lire la suite.
$texte = "L'histoire de la programmation est fascinante. Elle commence bien avant l'ère de l'informatique."; echo resumeIntelligent($texte, 100);
Ce que tu obtiendras, c’est un petit teaser qui garde l’essence du texte, “L’histoire de la programmation est fascinante. Elle commence bien avant l’ère de l’inf […] onnaissons aujourd’hui.”
Tutoriel vidéo avec exemple d’utilisation de substr() et offset positif
Variantes de la fonction : mb_substr pour la richesse linguistique
Si t’es un globe-trotter du code, travaillant avec des langues plus exotiques que le bon vieux français ou l’anglais, genre le japonais ou l’arabe, tu vas vite te rendre compte que substr
a ses limites. Pourquoi ? Parce que ces langues utilisent un encodage multioctet, et là, mon pote, substr
peut te laisser en plan.
C’est là que mb_substr
entre en scène, le super-héros des chaînes multioctets. mb_
ça veut dire “multibyte”, et cette fonction est ta meilleure amie pour manipuler du texte dans tous les encodages.
La syntaxe ressemble à ça :
mb_substr(string $string, int $start, ?int $length = null, ?string $encoding = null): string
$string
: Toujours ton texte à découper.$start
et$length
: Même combat que poursubstr
.$encoding
(optionnel) : L’encodage de ton texte. Si tu le précises pas, PHP utilisera l’encodage interne, mais tu peux mettre ce que tu veux, genre “UTF-8”.
Un exemple multiculturel
Imaginons que tu travailles avec du texte en japonais. Tu veux extraire un morceau précis sans risquer de couper un caractère en deux (ce qui serait un peu gênant, avouons-le).
$texteJaponais = "こんにちは世界"; // "Bonjour le monde" en japonais echo mb_substr($texteJaponais, 0, 5, "UTF-8"); // "こんにちは"
Et voilà, tu as ton “Bonjour” en japonais, intact et prêt à être utilisé. C’est pas beau, ça ?
mb_substr
c’est ton passeport pour l’internationalisation de tes projets PHP. Avec elle, aucune langue ne te résiste, et tu peux découper, tronquer et extraire du texte dans n’importe quel encodage sans te prendre la tête.