Extraction d’une chaîne en PHP
PHP possède des fonctions qui permettent de retourner des segments ou extraire une partie d’une chaîne. Ces fonction sont utiles pour vérifier la présence de caractères ou contrôler le format de la sous-chaîne retournée.
Trouver la première occurence d’une chaîne
PHP peut rechercher et retourner une sous-chaîne avec la fonction strstr(). Cette fonction recherche la première occurrence fournie en deuxième paramètre. Si la portion n’est pas trouvée, la fonction retournera false.
<?php
$email = 'nom@exemple.com';
$domaine = strstr($email, '@');
echo $domaine; // affiche : @exemple.com
?>
Affichage
@exemple.com
Vous pouvez retourner la partie de la chaîne située avant la première occurrence (depuis PHP 5.3.0), en spécifiant true en troisième paramètre.
<?php
$email = 'nom@exemple.com';
$domaine = strstr($email, '@', true); // recherche avant le masque
echo $domaine; // affiche : nom
?>
Affichage
nom
Si vous souhaitez faire une recherche similaire à la fonction strstr() mais insensible à la casse (majuscule, minuscule), utiliser la fonction stristr().
<?php
$email = 'noM@exemple.com';
$nom = stristr($email, 'm'); // recherche l'occurence 'm'
echo $nom; // affiche : M@exemple.com
?>
Affichage
M@exemple.com
Dans cet exemple la fonction stristr() ne fait pas de différence entre m et M.
Trouver la dernière occurence d’une chaîne
PHP possède une fonction similaire à strstr() mais qui recherche la dernière occurrence fournie en deuxième paramètre : strrchr() . Si la portion n’est pas trouvée, la fonction retournera false.
<?php
$email = 'nom@exemple.com';
$recherche = strrchr($email, 'e');
echo $recherche; // affiche : e.com
?>
Affichage
e.com
Note : Le deuxième paramètre est sensible à la casse.
Recherche un ensemble de caractères
PHP peut faire une recherche dans une chaîne sur un ensemble de caractères. Il tente de trouver la présence du premier caractère , puis du deuxième, etc.. Si aucun caractère est trouvée, la fonction retournera false.
<?php
$text = 'Il est temps de manger';
echo strpbrk($text, 'me'); // recherche en premier la presence de 'm' puis de 'e'
echo "<br>";
echo strpbrk($text, 'xt'); // recherche sensible à la casse
?>
Affichage
est temps de manger
t temps de manger
Note : Le deuxième paramètre est sensible à la casse.
Extraire une sous-chaîne
PHP possede une autre fonction qui permet d’extraire une chaîne de manière plus élaborée (à partir d’une position précise, en partant de la fin, sur une quantité bien définie de caractères…). Il s’agit de la fonction substr() qui accepte trois paramètres : la chaîne d’entrée, la position de départ, la position de fin ou la quantité. Si aucune chaîne est trouvée, la fonction retournera false.
<?php
echo substr('daniel', 1)."<br>"; // affiche 'aniel'
echo substr('daniel', -4)."<br>"; // affiche 'niel'
echo substr('daniel', 1, 3)."<br>"; // affiche 'ani'
echo substr('daniel', 0, 4)."<br>"; // affiche 'dani'
echo substr('daniel', 0, 8)."<br>"; // affiche 'daniel'
echo substr('daniel', -1, 1)."<br>"; // affiche 'l'
echo substr('daniel', -4, -1)."<br>"; // affiche 'nie'
echo substr('daniel', -3, 2); // affiche 'ie'
?>
Affichage
aniel
niel
ani
dani
daniel
l
nie
ie
Détails :
- Si le deuxième paramètre est positif, la recherche se fait depuis cette position en partant du début de la chaine (si le 3ème paramètre n’existe pas la recherche se fera automatiquement jusqu’à la fin de la chaîne).
Exemple : substr(‘daniel’, 1). - Si le deuxième paramètre est négatif, on recherche à partir de cette position en partant de la fin de la chaine (si le 3ème paramètre n’existe pas la recherche se fera jusqu’à la fin de la chaîne).
Exemple : substr(‘daniel’, -4). - Si le troisième paramètre est positif, on recherche à partir de la position start jusqu’à la quantité spécifiée dans ce paramètre.
Exemple : substr(‘daniel’, 1, 3). - Si le troisième paramètre est négatif, on recherche à partir de la position start jusqu’à cette position en partant de la fin de la chaîne.
Exemple : substr(‘daniel’, -4, -1).