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
?
À 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 ?
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.