Manipuler les chaînes de caractère

Avant d'aborder le vif du sujet, faisons d'abords un petit rappel de ce que l'on a déjà su à propos des chaînes de caractères.

Affichage de chaînes de caractère

Comme nous venons de voir dans le chapitre concernant 'la syntaxe de base en PHP', on utilise deux fonctions pour afficher des chaînes: echo et print. Ensuite, nous avons dit qu'il faut mettre ces chaines entre guillemets doubles ou guillemets simples.

Concaténation de chaînes

L'opération de concaténation des chaînes de caractère est le point. Il suffit donc de mettre un point entre deux chaînes pour les concaténer.

Les chaînes de caractère en tant que variable

Comme toute variable, l'affectation d'une variable chaîne se fait par le symbole "=" . Dès qu'on met un ou plusieurs caractères entre guillemet, PHP pense qu'il s'agit d'une chaîne de caractère.

Pour le tester, nous allons utiliser la fonction 'gettype' qui retourne le type de la variable passée en paramètre. Pour info, la fonction settype() permet, à l'inverse, d'affecter un type précis à une variable.

<?php
$nb = 5;
echo gettype($nb);
?>

La valeur affichée à l'écran est integer. C'est à dire que la variable $nb est de type nombre.

Dans ce deuxième exemple, même s'il s'agit toujours du nombre 5, la valeur affichée à l'écran n'est plus integer. Il est du type string ou chaine dès qu'on met le guillemet.

<?php
$nb = "5";
echo gettype($nb);
?>

Longueur d'une chaîne et élagage : Fonction strlen et trim

L'élagage est une opération qui consiste à retirer les blancs avant et après une chaîne de caractère. La fonction strlen nous permet d'avoir la longueur du texte.

En ce qui concerne l'enlèvement des blancs du début et de la fin de la chaine, il suffit d'utiliser la fonction trim. Notre chaîne de départ est de longueur 33 par exemple:

<?php
$chaine = " on étudie le php et etc.... ";
echo strlen($chaine); //renvoie 33
?>

En appliquant un trim pour enlever les espaces, il ne nous reste plus que 27 caractères.

<?php
$chaine = " on étudie le php et etc.... ";
$chaine = trim($chaine);
echo $chaine."<br />";
echo strlen($chaine);//renvoie 27
?>

On peut aussi enlever d'autres caractères que l'espace (comme les points par exemple) en donnant un deuxième paramètre à la fonction trim. On repassant une deuxième fois la fonction trim avec un point comme deuxième argument, nous n'avons plus que 23 caractères.

<?php
$chaine = " on étudie le php et etc.... ";
$chaine = trim($chaine);
$chaine = trim($chaine,".");
echo $chaine.'<br>';
echo strlen($chaine);//renvoie 23
?>

Recherche d'une sous-chaine en PHP : Fonction strpos et strstr

Il y a deux façons de trouver une sous chaîne. La fonction strpos() retourne un nombre qui indique la position de la première occurrence du caractère recherché. Quant-à la fonction strstr(), elle permet elle aussi de trouver la première occurrence d'un caractère. Sa seule différence avec strpos() est qu'elle retourne le reste de la chaîne à partir de la chaîne repérée.

Elles ont 2 deux arguments : la chaine dans laquelle on effectue la recherche et le caractère à rechercher.

<?php
$adresse = "nom@domaine.fr";
$arobase = "@";
echo strpos($adresse,$arobase) . "<br />"; //retourne la position :5
echo strstr($adresse,$arobase) . "<br />"; //retourne la chaine après avec la chaine recherchée: @domaine.fr
?>

Les deux fonctions ont chacune leurs équivalent : Les fonctions stripos et stristr pour l'analyse sans prendre en compte la casse, strrpos qui trouve la position de la dernière occurrence d'un caractère dans une chaîne, etc.

Récupération d'une sous-chaine : Fonction substr

Maintenant, on va voir comment récupérer une partie de la chaine de caractère. On veut par exemple afficher juste les 10 premiers caractères dans un long texte. La fonction substr nous permet de faire cela. Il faut juste lui indiquer la position de départ et le nombre de caractères à enlever.

Dans notre exemple ci-dessous, la valeur 0 indique que la position départ est le début du texte:

<?php
$chaine = "Dans ce texte, essayons d'afficher juste les 10 premiers caractères. On coupe donc le texte.";
echo substr($chaine, 0, 10); // affiche " Dans ce te "
?>

Remplacer un motif dans une chaîne : str_replace

Dans les emails que l'on envoie (un mail de confirmation par exemple), on remarque que le contenu est le même avec juste le prénom de la personne qui change. Essayons de faire quelque chose de ce genre avec la fonction str_replace. Comme son nom l'indique, la fonction str_replace permet de chercher une sous chaine et de la remplacer.

La syntaxe de cette fonction en PHP est la suivante :

<?php
str_replace($cherche, $remplace,$texte),
?>

$cherche est la valeur à rechercher, $remplace est la valeur avec laquelle on la remplace et $texte est le texte à l'intérieur duquel toute l'opération se déroule. Cette expression est donc équivalent à chercher tous les $cherche dans $texte et les remplacer par $remplace.

Exemple : Cherchons le mot "personne" et remplaçons le par le prénom "Marcel" par exemple.

<?php
$chaine ="Cher personne, <br />Nous vous remercions d'avoir bien voulus nous rejoindre. Merci personne de
votre participation.C'est très aimable de votre part.<br />A bientôt, personne";
echo str_replace( "personne", "Marcel", $chaine);
?>

Changement de casse : strtoupper et strtolower

Il s'agit maintenant de transformer les minuscules en majuscule ou inversement. Les fonctions en question sont strtolower pour avoir des textes en minuscules et strtoupper pour avoir des textes en majuscule.

Généralement, elles sont utilisées juste avant l'affichage pour normaliser la présentation des données. Dans un formulaire par exemple, s'il est nécessaire de mettre un nom en capitale, on n'est plus obligé d'indiquer à l'internaute de saisir son nom en majuscule. On peut le laisser faire comme bon lui semble et faire le traitement dans le code pour changer.

<?php
$nom = "Vernes";
$mail = "JULES@domaine.fr";
echo $nom. " devient " . strtoupper($nom) . "<br />"; //Mettre en majuscule
echo $mail . " devient " . strtolower($mail) . "<br />";//Mettre en minuscule
?>

Fonctions PHP : ucfirst et lcfirst

Toujours dans le même contexte, les fonction ucfirst() et lcfirst() convertissent en majuscules respectivement le premier caractère de la chaîne et le premier caractère de chaque mot.

<?php
$phrase = "une phrase débute toujours par un majuscule.";
echo $phrase . "<br />";
echo ucfirst($phrase) . "<br />";

$acronyme = "fond monétaire internationnale";
echo $acronyme . "<br />";
echo ucwords($acronyme);
?>

Recevez par email nos prochains conseils

Oseox sur Facebook Notifications via Facebook Oseox sur Twitter Notre actu sur twitter

Une question ? Venez la poser sur notre forum développement web !

A propos de l'auteur

Nicolas Galle

Nicolas Galle est développeur web sénior pour l'agence Aseox.