W3docs

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|false

La 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 est false (par défaut), la partie de la chaîne à partir de la correspondance est retournée ; lorsque la valeur est true, 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

php— editable, runs on the server

strchr() localise le premier "o" dans "Hello World" et retourne le reste de la chaîne à partir de ce caractère :

o World

Retourner 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;
?>
Hell

C'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 found

Utilisez 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 de strstr() ; 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 (ou false), plutôt que la sous-chaîne correspondante. À utiliser lorsque vous avez besoin d'un index pour substr() 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 de strstr()/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.

Pratique

Pratique
Que fait la fonction strchr() en PHP selon le lien source fourni ?
Que fait la fonction strchr() en PHP selon le lien source fourni ?
Was this page helpful?