Vérifier si une chaîne est présente dans une autre chaîne

Pour vérifier la présence d'une chaîne dans une autre, habituellement nous utilisons la méthode strpos (ou stripos insensible à la casse).

$var = 'joyeux noël les amis';

if (strpos($var, 'ami') !== false) {
     echo 'Chaîne "ami" trouvé';
}

Attention à bien utiliser la comparaison stricte avec !== car strpos peut retourner 0 si la chaîne recherchée est en tout début de la phrase (et on sait bien que 0 est considéré comme false en PHP).

Une autre manière est d'utiliser la méthode strstr (ou stristr).

C'est juste pour information, il est recommandé dans notre cas de plutôt utiliser strpos pour des raisons de performances.

$var = 'joyeux noël les amis';

if (strstr($var, 'ami') !== false) {
     echo 'Chaîne "ami" trouvé';
}

Mais ces différentes méthodes ne sont pas très parlantes ! N'existerait-il pas une méthode qui nous retournerait simplement true or false ?

PHP 8.0 à la rescousse

À partir de PHP 8.0, 3 nouvelles méthodes font leur apparition pour nous faciliter la vie :

  • str_contains qui va simplement retourner true or false si la chaîne recherchée est présente dans une autre chaîne :
$var = 'joyeux noël les amis';

if (str_contains($var, 'ami')) {
     echo 'Chaîne "ami" trouvé';
}
  • str_starts_with qui va retourner true si une chaîne commence par une autre chaîne, false sinon :
$var = 'joyeux noël les amis';

if (str_starts_with($var, 'joye')) {
     echo 'La chaîne commence bien par "joye"';
}
  • str_ends_with qui va retourner true si une chaîne termine par une autre chaîne, false sinon :
$var = 'joyeux noël les amis';

if (str_ends_with($var, 'mis')) {
     echo 'La chaîne termine bien par "mis"';
}

Tout devient plus simple non ?

Vous aimeriez progresser en PHP ? Mais vous ne savez pas comment vous y prendre ?

S'entraîner pour progresser en PHP

Mon programme "S'entraîner pour progresser en PHP" est disponible. Il vous permettra de recevoir chaque semaine un kata de code directement dans votre boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives et des défis supplémentaires.

Reçois dès maintenant un kata gratuit en cliquant sur le bouton ci-dessous.