strchr()
Notre article porte sur la fonction PHP strchr(), utilisée pour trouver la première occurrence d'un caractère dans une chaîne. Découvrez la syntaxe et les exemples.
La fonction PHP strchr() recherche la première occurrence d'une sous-chaîne dans une chaîne et retourne le reste de la chaîne à partir de ce point. Malgré son nom (qui rappelle la fonction C strchr), le « needle » recherché peut contenir plus d'un caractère. Cette page couvre la syntaxe, le paramètre optionnel $before_needle, la valeur de retour false contre laquelle il faut se prémunir, et la relation entre strchr() et les fonctions similaires.
Syntaxe
strchr(string $haystack, string $needle, bool $before_needle = false): string|falseLa fonction accepte trois paramètres :
$haystack— la chaîne dans laquelle effectuer la recherche.$needle— la sous-chaîne à rechercher. Si elle contient plusieurs caractères,strchr()recherche la sous-chaîne entière.$before_needle(optionnel) — lorsque la valeur estfalse(par défaut), la partie de la chaîne à partir de la correspondance est retournée ; lorsque la valeur esttrue, la partie avant la correspondance est retournée. Ajouté dans PHP 5.3.
La fonction retourne la portion correspondante de $haystack sous forme de chaîne, ou false si $needle n'est pas trouvé.
Exemple de base
strchr() localise le premier "o" dans "Hello World" et retourne le reste de la chaîne à partir de ce caractère :
o WorldRetourner la partie avant la correspondance
Passez true comme troisième argument pour obtenir tout ce qui se trouve avant la première occurrence :
<?php
$string = "Hello World";
$result = strchr($string, "o", true);
echo $result;
?>HellC'est pratique pour diviser une chaîne sur un délimiteur — par exemple, récupérer la partie locale d'une adresse e-mail en prenant tout ce qui précède "@".
Gérer le cas « non trouvé »
Lorsque le needle est absent, strchr() retourne false, et non une chaîne vide. Comme false s'affiche comme rien, un résultat non vérifié peut produire silencieusement une sortie vide, il faut donc le tester explicitement :
<?php
$result = strchr("Hello World", "z");
if ($result === false) {
echo "Not found";
} else {
echo $result;
}
?>Not foundUtilisez la comparaison stricte === : une correspondance réussie pourrait elle-même être la chaîne "0", que == traiterait comme fausse.
strchr() et les fonctions similaires
strstr()—strchr()est simplement un alias destrstr(); elles se comportent de manière identique.strstr()est le nom le plus couramment utilisé.strpos()— retourne la position entière de la première correspondance (oufalse), plutôt que la sous-chaîne correspondante. À utiliser lorsque vous avez besoin d'un index poursubstr()ou une autre logique basée sur un décalage.substr()— extrait une portion d'une chaîne par décalage numérique et longueur, sans aucune recherche.stristr()— l'équivalent insensible à la casse destrstr()/strchr().
Résumé
strchr() trouve la première occurrence d'un needle dans une chaîne et retourne le reste de la chaîne (ou, avec $before_needle défini à true, la partie qui la précède). N'oubliez pas qu'il s'agit d'un alias de strstr(), que le needle peut être une sous-chaîne à plusieurs caractères, et qu'il retourne false — à vérifier avec === — lorsque rien ne correspond.