Chaines de caractères
Les chaines de caractères
Les chaînes de caractères sont des séquences de caractères utilisées pour représenter du texte. Elles peuvent être définies de différentes manières :
- En utilisant des guillemets simples
' :
$chaine = 'Ceci est une chaîne de caractères';
- En utilisant des guillemets doubles
" :
$chaine = "Ceci est une chaîne de caractères";
Il est également possible de définir une chaîne de caractères sur plusieurs lignes en utilisant la syntaxe heredoc :
$chaine = <<<TEXT
Ceci est une chaîne de caractères
sur plusieurs lignes.
TEXT;
Concaténation
En PHP, il est possible de concaténer des chaînes de caractères en utilisant le point . :
$chaine1 = 'Bonjour';
$chaine2 = ' comment vas-tu ?';
$chaine_complete = $chaine1 . $chaine2; // 'Bonjour comment vas-tu ?'
Manipulation de chaînes
Il est également possible de récupérer une sous-chaîne d'une chaîne en utilisant la fonction substr(). Par exemple, pour récupérer les 4 premiers caractères d'une chaîne, on peut utiliser la syntaxe suivante :
$chaine = 'Bonjour';
$sous_chaine = substr($chaine, 0, 4); // 'Bonj'
Il existe de nombreuses autres fonctions permettant de manipuler les chaînes de caractères, telles que strlen() pour obtenir la longueur d'une chaîne, strtolower() pour convertir une chaîne en minuscules, ou encore str_replace() pour remplacer un sous-texte par un autre dans une chaîne.
- strlen() : renvoie la longueur d'une chaîne de caractères.
- strtolower() : convertit une chaîne de caractères en minuscules.
- strtoupper() : convertit une chaîne de caractères en majuscules.
- ucfirst() : met le premier caractère d'une chaîne en majuscule.
- ucwords() : met le premier caractère de chaque mot d'une chaîne en majuscule.
- str_replace() : remplace un sous-texte par un autre dans une chaîne de caractères.
- substr() : renvoie une sous-chaîne d'une chaîne de caractères.
- trim() : supprime les espaces en début et fin de chaîne.
- explode() : divise une chaîne de caractères en plusieurs sous-chaînes en utilisant un délimiteur.
- implode() : assemble des éléments d'un tableau en une chaîne de caractères en utilisant un délimiteur.
- htmlentities() : convertit les caractères spéciaux en équivalents HTML.
Formatage de chaînes
Il existe plusieurs façons de formater une chaîne de caractères :
- Utiliser la fonction
sprintf(): cette fonction permet de formater une chaîne de caractères en utilisant des placeholders représentés par des symboles%suivis d'une lettre indiquant le type de données à afficher (par exemple%spour une chaîne de caractères,%dpour un entier, etc.). Par exemple :
$nom = 'John';
$age = 30;
$chaine = sprintf('Bonjour, je m\'appelle %s et j\'ai %d ans', $nom, $age);
// $chaine vaut 'Bonjour, je m'appelle John et j'ai 30 ans'
- Utiliser la concaténation avec le point
.: cette méthode permet de fusionner plusieurs chaînes de caractères en une seule en utilisant le point.comme opérateur de concaténation. Par exemple :
$nom = 'John';
$age = 30;
$chaine = 'Bonjour, je m\'appelle ' . $nom . ' et j\'ai ' . $age . ' ans';
// $chaine vaut 'Bonjour, je m'appelle John et j'ai 30 ans'
- Utiliser la syntaxe heredoc : cette syntaxe permet de définir une chaîne de caractères sur plusieurs lignes en utilisant la syntaxe
<<<suivie d'un identifiant, puis la chaîne de caractères elle-même, et enfin l'identifiant à nouveau pour terminer la chaîne. Par exemple :
$nom = 'John';
$age = 30;
$chaine = <<<EOT
Bonjour,
je m'appelle $nom et j'ai $age ans.
EOT;
// $chaine vaut 'Bonjour,\nje m'appelle John et j'ai 30 ans.'
Il existe également d'autres façons de formater une chaîne de caractères. Notamment, grâce à des fonctions de mise en forme telles que nl2br() pour convertir les retours à la ligne en balises HTML <br>, ou encore str_pad() pour ajouter des caractères de remplissage à une chaîne.
Exercices de lecture
1.1.
$text = "This is an example of text";
$search = "ex";
$replace = "EX";
$newText = str_replace($search, $replace, $text);
$newText = strtoupper($newText);
$newText = strrev($newText);
echo $newText . PHP_EOL;
1.2.
$string1 = " This string ";
$string2 = " has extra spaces ";
$string3 = " at the beginning and end ";
$newString = trim($string1) . " " . strtoupper(trim($string2)) . " " . strtolower(trim($string3));
echo $newString . PHP_EOL;
1.3
$string1 = " This string has ";
$string2 = " lots of ";
$string3 = " whitespace and ";
$string4 = " unwanted characters ";
$string5 = " !@#%^&* ";
$string1 = trim($string1);
$string2 = ucwords(strtolower(trim($string1)));
$string3 = str_replace(" ", "-", trim($string3));
$string5 = preg_replace("/[^a-zA-Z0-9]/", "", $string5);
$string4 = strrev(trim($string4));
$newString = $string1 . " " . $string2 . " " . $string3 . " " . $string4 . " " . $string5;
echo $newString . PHP_EOL;
Exercices
Exercice 1 : Générateur de phrases aléatoires
Dans cet exercice, vous allez créer une fonction qui génère une phrase aléatoire. Vous aurez besoin de trois listes de chaînes de caractères : une liste de sujets, une liste de verbes et une liste de compléments. Votre fonction devrait choisir un sujet, un verbe et un complément au hasard dans chaque liste et les concaténer pour former une phrase.
Par exemple, si vos listes sont les suivantes :
- Sujets : ["Je", "Tu", "Il"]
- Verbes : ["mange", "vois", "aime"]
- Compléments : ["une pomme", "la télé", "la programmation"]
Votre fonction pourrait générer des phrases comme "Je vois la télé" ou "Il aime une pomme".
Exercice 2 : Conversion de texte en camel case
Écrivez une fonction qui prend en entrée une phrase en texte normal et la convertit en camel case. Le camel case est une convention d'écriture où chaque mot commence par une lettre majuscule, sauf le premier mot qui commence par une lettre minuscule. Par exemple, la phrase "bonjour tout le monde" devrait être convertie en "bonjourToutLeMonde".
Exercice 3 : Calcul du score d'un mot
Écrivez une fonction qui prend en entrée un mot et calcule son score en attribuant une valeur à chaque lettre selon sa position dans l'alphabet (A=1, B=2, etc.). Le score d'un mot est la somme des valeurs de ses lettres. Par exemple, le score du mot "hello" serait 8+5+12+12+15 = 52.
Exercice 4 : Encoder et Décoder une chaîne de caractères
Écrivez une fonction encode qui prend en entrée une chaîne de caractères et renvoie une nouvelle chaîne où chaque caractère est remplacé par le caractère qui se trouve trois positions après lui dans l'alphabet. Par exemple, 'a' deviendrait 'd', 'b' deviendrait 'e', etc. Pour les trois dernières lettres, 'x' deviendrait 'a', 'y' deviendrait 'b' et 'z' deviendrait 'c'.
Ensuite, écrivez une fonction decode qui fait l'opération inverse, c'est-à-dire qu'elle prend en entrée une chaîne de caractères encodée et renvoie la chaîne de caractères originale.
Exercice 5 : Compter les voyelles et les consonnes
Écrivez une fonction qui prend en entrée une chaîne de caractères et renvoie le nombre de voyelles et de consonnes dans cette chaîne. La fonction devrait être capable de gérer à la fois les lettres majuscules et minuscules. Par exemple, pour la chaîne "Bonjour tout le monde", la fonction devrait renvoyer "Il y a 8 voyelles et 9 consonnes".
