Apprendre PHP (6/19) - Les chaînes de caractères

In this French‑language tutorial, the instructor walks through the most commonly used PHP string functions and related concepts. Starting with a simple HTML form that captures a text input, he demonstrates how to retrieve the submitted value via $POST and then applies a series of functions to the variable $result. The lesson covers measuring string length with strlen, changing case with strtoupper, strtolower and ucfirst, extracting parts of a string with substr, automatically escaping special characters using addslashes and reversing the process with stripslashes, trimming whitespace via trim and visualising the effect with strreplace, removing HTML tags with strip_tags and safely encoding them with htmlentities. He explains ASCII code conversion using ord and chr, shows how to generate a table of characters and their codes by iterating over a string, introduces the Heredoc syntax for defining large multi‑line string literals without manual escaping, and finally presents dynamic variable names (variable variables) and the constraints on their identifiers. Throughout, he highlights security considerations such as escaping input for database storage and preventing HTML injection. The tutorial is instructional, code‑driven, and emphasizes practical usage of each function.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon de PHP. Aujourd'hui, nous allons traiter les chaînes de caractères. En PHP, il existe un nombre incalculable de fonctions agissant sur les chaînes de caractères. Bien qu'il y en a autant, quelques-unes seulement sont suffisantes pour les traitements usuels. Nous allons donc nous concentrer sur les fonctions les plus importantes et les plus utilisées. Et comme d'habitude, si dans une future leçon le besoin d'une fonction autre que celles vues dans ce cours est senti, alors on l'évoquera. J'ai déjà préparé ce code HTML. Il contient un formulaire qui renferme une zone de texte nommée chaîne et un bouton de soumission identifié par le nom valider. Nous avons bien entendu récupéré les variables chaîne et valider à l'aide des variables superglobales $_POST. En dessous du formulaire, nous allons afficher la variable résultat c'est sur cette variable que l'on va agir afin de voir l'effet de quelques fonctions agissant sur les chaînes de caractères en PHP. Le résultat que l'on aura sur le navigateur ressemble à ceci. Ici c'est la zone de texte et là c'est le bouton qui permet de soumettre le formulaire et en dessous on va afficher le résultat souhaité. On commence d'abord par la première fonction sur les chaînes de caractères, c'est celle qui permet de retourner la longueur de celle-ci. Il s'agit de la fonction strlen. On va donc mettre la variable résultat égal la fonction strlen comme ça, et entre les parenthèses on va placer notre variable qui dans ce cas est chaîne. Exécutons pour voir le résultat. Bon, maintenant je vais écrire ici une chaîne, par exemple bonjour. Quand je clique sur Valider, ça m'affiche 7. Alors la fonction strlen permet de retourner la longueur en caractères de la chaîne passée en paramètre. Il y a aussi la fonction str_to_upper qui permet de renvoyer la chaîne de caractères en majuscule. La syntaxe est la suivante. Exécutons maintenant. Il suffit d'actualiser, bon pas la peine de recliquer sur le bouton parce qu'on a déjà soumis le formulaire. Et ça me donne Bonjour en majuscule. La fonction str_to_lower permet de retourner la chaîne en minuscule. Même chose, donc ça me retourne ceci. Et il y a la fonction UcFirst qui permet de retourner la chaîne capitalisée. Ça veut dire le premier caractère est converti en majuscule et le reste est maintenu tel qu'il est. Donc la fonction c'est UcFirst. Comme ça. Donc j'actualise. Rien ne va changer parce que B est déjà mis en majuscule. Bon maintenant si je le mets en minuscule, on constate que seulement le B est capitalisé. Il existe aussi la fonction substr qui permet de retourner une partie de la chaîne de caractères. La syntaxe est la suivante. substr contient 3 paramètres. Le premier c'est la chaîne concernée qu'on appelle la chaîne mère. Deuxième paramètre c'est la position de début de l'extraction de la chaîne, on va dire par exemple la position 0. Le troisième argument c'est la longueur de la sous-chaîne à retourner, on va mettre par exemple 3. Dans ce cas je vais extraire les 3 premiers caractères de ma chaîne en commençant de la position 0. En retournant 3 caractères. Bon, j'actualise pour voir le résultat et ça m'affiche bon. Donc je commence à 0 et je retourne les 3 caractères à partir de la position du commencement. Il y a aussi la fonction addslashes qui permet d'appliquer automatiquement les antislashes aux caractères spéciaux. La syntaxe est la suivante et ça contient un seul paramètre qui est la chaîne concernée. Dans ce cas, si le PHP détecte le moindre caractère spécial, il va placer un antislash juste avant pour l'échapper automatiquement. Par exemple, imaginez que j'ai mis une simple quote. Quand je mets Valider, on constate qu'il y a automatiquement un antislash qui est placé juste avant. C'est-à-dire c'est un échappement automatique des caractères spéciaux. Même chose pour les doubles quotes, voilà. Même chose pour l'antislash, etc. Ça veut dire que PHP va détecter les caractères spéciaux et principalement simples quotes, doubles quotes et antislash, et il va les échapper automatiquement. Bien sûr, ce genre de traitement est pratique quand on veut mettre des informations principalement dans une base de données, avant de les inclure il faut d'abord antislasher les caractères spéciaux pour des mesures de sécurité. Bien que cette option elle est déjà activée en PHP par défaut via le fichier php.ini à l'aide de la directive magic_quotes_gpc, bon qui est généralement toujours activée et du coup pas la peine de mettre la fonction addslashes parce que le PHP assure déjà ce traitement d'une manière automatique. Et si vous voulez retirer les antislashes qui ont été rajoutés alors il suffit d'appeler la fonction stripslashes. Donc imaginez que j'ai fait ça. Alors j'ajoute des antislash automatiquement et je les retire après. Alors je vois bien qu'il n'y a pas des antislash qui ont été rajoutés, les caractères ils ont été repris tels quels sont. Il y a aussi la fonction trim qui permet de retirer automatiquement les espaces de début et de fin de la chaîne de caractères. La syntaxe est la suivante. Trim comme ça. Donc maintenant j'actualise. Imaginez que j'ai placé un espace puis bonjour et un autre espace. On constate que bonjour est écrit sans inclure les espaces qui sont intégrés au début et à la fin. Bien sûr on peut pas les voir, donc ce qu'on va faire c'est remplacer ces espaces par des caractères qui sont visibles. Alors on mettra ici la fonction str_replace. La fonction str_replace permet de chercher des motifs dans une chaîne et de les remplacer par d'autres. Par exemple, ici on va détecter la présence des espaces et on va les remplacer par le souligné. À chaque fois qu'il y a un espace, on le remplace par souligné dans la chaîne. Mais figurez-vous que cette chaîne est démunie des espaces de début et de fin. Alors dans ce cas, donc s'il y a un espace au début et à la fin, forcément ils seront retirés. Donc maintenant j'exécute. Donc j'ai plus d'espace. Par contre au milieu j'ai bien un espace, il a été détecté. Par contre si je mettais pas la fonction trim, dans ce cas la même chaîne de caractères serait écrite de cette manière. Donc il y a bien des espaces au début et à la fin qui n'ont pas été retirés automatiquement. Alors trim sert à retirer les espaces de début et de fin qui sont généralement insignifiants mais peuvent des fois poser quelques problèmes de traitement. Imaginez maintenant que j'ai fait ça, la balise <b>Bonjour /b>. Bon, quand j'exécute, j'ai pu inclure des balises HTML dans ma chaîne de caractères et ils ont été traités par le PHP. Bon, des fois cette pratique est un peu dangereuse parce que ça peut conduire à des problèmes de sécurité. Alors il serait mieux d'exclure aussi les balises de cette manière, donc il suffit d'appliquer la fonction strip_tags. Comme ça, et on met notre chaîne. Donc maintenant j'exécute, on constate bien que les balises ont été retirées. Sinon on fait appel à la fonction HTML entities comme ça. Donc maintenant j'exécute. Bon, si vous regardez bien, on a imprimé directement les balises <b> et </b>. HTML entities est une fonction qui permet de remplacer les caractères spéciaux HTML en leur équivalent qu'on a déjà vu dans la leçon du HTML, qui commence par l'esperluette et qui finit par point-virgule. Bon, si j'examine le code source pour voir à quoi ça va ressembler, je vois bien que bonjour est précédé par lt; donc là c'est le chevron d'ouverture, gt; c'est le chevron de fermeture, et entre les deux il y a le b. Donc c'est-à-dire c'est la balise b et là donc c'est la balise /b. Mais tout a été converti en entité HTML et ça aussi c'est une bonne mesure de sécurité contre les injections, surtout du coup d'HTML. Il existe aussi la fonction Alt qui permet de retourner le code ASCII du caractère renseigné, comme ça. Mais n'oubliez pas d'inclure un seul caractère, bon, parce que ça s'applique sur un seul et unique caractère. Par exemple, A majuscule, son code ASCII c'est 65. Le a minuscule, son code ASCII c'est 97. Et pour faire l'inverse c'est chr. Dans ce cas chr va convertir le code ASCII en caractères normaux. Donc maintenant si je mets 65, ça me retourne A majuscule. Et si je mets 97, ça me retourne a minuscule. Maintenant nous allons voir une autre pratique très utilisée surtout pour les longues chaînes de caractères en PHP. Cette pratique est appelée Heredoc ou bien la syntaxe Heredoc. Regardons le code suivant. Donc maintenant je vais essayer de modifier ce code carrément. Je vais retirer tout le PHP que j'ai ici. Bon, je retire ça aussi. Donc là c'est un code purement HTML qui ne contient aucune trace du PHP. Imaginez que je veux générer ce code avec du PHP. Ça veut dire je veux déclarer tout ce code en tant que chaîne de caractères PHP. Donc si je mets la syntaxe suivante, par exemple j'ouvre le script PHP que je ferme ensuite, et ensuite je mets ici str= et je mets double quotes de cette manière pour dire que tout ça c'est ma chaîne de caractères. On constate bien que ça va générer des erreurs parce que les doubles quotes qui servent de délimiteurs de la chaîne sont aussi présentes au sein de la chaîne elle-même. Alors il faut tout échapper afin d'éviter les problèmes. Donc il faut mettre des antislashs comme ça, donc avant chaque double quote. Et ce n'est pas le seul problème parce que même si je mets des variables à l'intérieur ou bien autre chose, alors dans ce cas ça peut conduire à un traitement non souhaité. La solution c'est la syntaxe heeldoc. En quoi ça consiste? C'est tout simple. Ma chaîne de caractères je peux la déclarer de cette manière. Je vais mettre toujours str qui est l'identifiant de ma chaîne, égal, et je mets 3 chevrons d'ouverture comme ça, et ensuite je mets un identifiant. Généralement on met EOT, mais bien sûr vous êtes libre de choisir l'identifiant que vous souhaitez. On appelle ça un identifiant de début de la chaîne. Maintenant quand on aura fini la déclaration de notre chaîne, bien sûr il faut retirer le double quote qui est là, on va rappeler le délimiteur qui est EOT et on met le point-virgule. Donc pour déclarer la syntaxe HerDoc, il est impératif qu'à la fermeture, ça veut dire que pour déclarer le délimiteur de fermeture, il faut pas mettre des indentations, voilà des espaces ou bien des tabulations, ça c'est interdit. Il faut toujours que ça figure au tout début de la ligne dans une ligne à part suivie immédiatement par point-virgule. Et au début, il suffit de précéder l'identifiant par les 3 chevrons de cette manière. Donc maintenant, je vais mettre ici echo str. J'exécute ma page et je vois bien que ma page s'exécute normalement. Bon, si j'affiche le code source, bon, je vais voir que tout le code source est généré d'une manière automatique. Mais n'oubliez pas que c'est un code que je n'ai pas généré par du HTML directement, mais il est généré par du PHP. Alors cette syntaxe est très utile surtout pour des longues chaînes de caractères qui peuvent contenir des caractères spéciaux, des variables, etc. Maintenant nous allons faire un exemple. Imaginez que l'on veut afficher des codes ASCII de tous les caractères alphabétiques minuscules et majuscules. Alors on va essayer de faire le code suivant. Bon, tout d'abord je vais déclarer ma chaîne de caractères qui contient tous les caractères souhaités. Je mettrai par exemple donc tout l'alphabet en majuscules. Voilà, j'espère que j'ai rien oublié. Maintenant je vais déclarer une boucle qui va parcourir cette chaîne du début à la fin. Pour i commençons de 0, i allant jusqu'à la fin de la chaîne. Str_len, donc str_len ça retourne la longueur de la chaîne. Et bien sûr, donc je vais m'arrêter à str_len- 1, sachant que j'ai commencé à la position 0, et j'incrémente le compteur de 1. Maintenant je vais afficher caractère par caractère, donc je fais appel à la fonction substr. Donc la chaîne principale c'est str, la position elle est variable, la position de début, moi je mettrai i, et la longueur de la chaîne à retourner c'est 1, c'est-à-dire que je vais récupérer un seul caractère. Bon, si je fais déjà que ça pour voir ce que ça donne, exécutons pour voir le résultat. Donc ça m'affiche a, b, c, d jusqu'à z. Maintenant devant chaque caractère je vais intégrer sa représentation en ASCII. Alors je vais mettre concaténer avec le point concaténer avec maintenant la fonction ord et je reprends la même syntaxe que j'ai là. Et on va pas oublier d'intégrer un retour à la ligne. Donc maintenant j'actualise et j'ai bien donc A qui est 65, B qui est 66 jusqu'à Z qui est 90. Maintenant si je veux récupérer le code ASCII des caractères minuscules, il suffit de reprendre ce code tel qu'il est et au lieu de déclarer l'alphabet minuscule, je vais faire appel à la fonction str_to_lower, à laquelle je passe l'argument str lui-même. C'est-à-dire je vais écraser l'ancien str et je vais créer un nouveau qui contient la représentation minuscule de l'ancienne chaîne de caractères. Donc maintenant j'exécute et ça me donne en haut la représentation des majuscules et en bas la représentation des minuscules. Il conviendra de mentionner qu'en PHP il existe ce que l'on appelle des variables dynamiques. Ça veut dire des variables dont le nom peut changer. Le principe est simple. Imaginez que j'ai la variable suivante: str= Bonjour. Donc maintenant je veux créer une variable dont l'identifiant est la valeur de la chaîne, ça veut dire Bonjour comme ça. Alors ce que je vais faire c'est ça, donc je mets$ pour dire que c'est une variable, ensuite je mets des accolades et entre les accolades je mettrai la chaîne souhaitée. Dans ce cas la chaîne c'est Bonjour de cette manière et je lui affecte la valeur que je veux, par exemple variable dynamique. Maintenant je mets echo bonjour comme ça. Bon, ça veut dire que maintenant l'identifiant de la variable c'est bien la chaîne de caractères qui est passée entre les accolades. Exécutons pour voir déjà si variable dynamique est affichée. Et c'est bon, c'est bien affiché. Donc maintenant au lieu de faire ça, il suffit de mettre directement str puisque bonjour est affecté à la variable str. Le résultat ne changera pas donc ça donne la même chose. Bien que l'on ne peut pas vraiment sentir l'utilité de cette pratique, mais il faut savoir que des fois ça s'avère vraiment très utile et on aura l'occasion de revenir sur ça dans des prochaines vidéos selon les situations. Mais pour le moment, sachez qu'il existe aussi cette technique qui permet de déclarer une chaîne de caractères en tant qu'identifiant d'une variable. Et bien entendu, il faut que la chaîne ne contienne pas des caractères qui sont pas conventionnels aux variables. Il faut qu'elle contienne uniquement des caractères alphabétiques, des caractères numériques, le symbole souligné et c'est tout. On se contente de ça pour cette séance. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









