PHP 8 : str_starts_with et str_ends_with — comment vérifier le début et la fin d'une chaîne

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Plus de bricolages : découvrons str_starts_with et str_ends_with en PHP 8

\n\n

Avez-vous déjà écrit du code comme if (strpos($str, 'prefix') === 0) en trouvant cela un peu maladroit ? Ou peut-être passiez-vous du temps à déchiffrer substr($str, -3) === 'end' pour vérifier la fin d'une chaîne ? Si oui — j'ai une excellente nouvelle pour vous. Depuis PHP 8.0, le langage a introduit deux fonctions élégantes et intuitives : str_starts_with() et str_ends_with().

\n\n

Dans cet article, nous allons les analyser en profondeur. Vous apprendrez comment elles fonctionnent, en quoi elles diffèrent des anciennes approches, et pourquoi vous devriez les utiliser dans chaque projet PHP moderne. Nous examinerons également des exemples concrets de la vie d'un développeur — de la vérification d'URL à la validation d'email en passant par le travail avec les chemins de fichiers.

\n\n

Que sont str_starts_with() et str_ends_with() ?

\n\n

Ce sont des fonctions intégrées de PHP 8 qui permettent de vérifier si une chaîne commence par une sous-chaîne donnée, ou se termine par celle-ci. Elles retournent une valeur booléenne (true ou false), ce qui les rend idéales pour une utilisation dans des conditions.

\n\n

Voici leur syntaxe de base :

\n\n
str_starts_with(string $haystack, string $needle): bool\nstr_ends_with(string $haystack, string $needle): bool
\n\n

Où $haystack est la chaîne que vous vérifiez, et $needle est la sous-chaîne que vous recherchez au début ou à la fin.

\n\n

Exemple simple

\n\n
<?php\n$string = "Bonjour, le monde !";\n\n// Vérifie si la chaîne commence par "Bonjour"\nif (str_starts_with($string, "Bonjour")) {\n    echo "La chaîne commence par 'Bonjour'"; // Ce code s'exécutera\n}\n\n// Vérifie si la chaîne se termine par "monde !"\nif (str_ends_with($string, "monde !")) {\n    echo "La chaîne se termine par 'monde !'"; // Celui-ci aussi\n}\n?>
\n\n

Simple, n'est-ce pas ? Pas de calculs supplémentaires, pas de === 0 ou de strlen(). Juste une vérification et un résultat.

\n\n

Pourquoi est-ce important ? Problèmes des anciennes approches

\n\n

Avant PHP 8, les développeurs devaient se débrouiller. La méthode la plus courante pour vérifier le début d'une chaîne ressemblait à ceci :

\n\n
if (strpos($string, 'prefix') === 0) { ... }
\n\n

Quel est le problème ? strpos() recherche la sous-chaîne n'importe où dans la chaîne, pas seulement au début. Oui, la vérification === 0 élimine les résultats incorrects, mais le code lui-même n'exprime pas l'intention du développeur. Vous le regardez et vous pensez : "Ah, il vérifie si ça commence par... ou il cherche simplement ?" — cela réduit la lisibilité.

\n\n

Et la vérification de la fin de la chaîne était encore moins intuitive :

\n\n
if (substr($string, -3) === 'end') { ... }
\n\n

Ici, vous devez connaître exactement la longueur de la sous-chaîne (-3), ce qui entraîne des erreurs si vous indiquez un mauvais nombre. De plus, si la sous-chaîne est plus longue que la chaîne elle-même — substr() retournera simplement une chaîne vide, et la condition ne se déclenchera jamais.

\n\n

Les nouvelles fonctions str_starts_with() et str_ends_with() résolvent tous ces problèmes :

\n
    \n
  • Lisibilité : Le code parle de lui-même.
  • \n
  • Fiabilité : Pas besoin de penser à la longueur de la sous-chaîne ou aux chaînes vides.
  • \n
  • Performance : Les fonctions sont optimisées au niveau du noyau PHP.
  • \n
\n\n

Exemples concrets d'utilisation en développement web

\n\n

Voyons où ces fonctions peuvent être utiles en pratique. J'ai sélectionné plusieurs scénarios que vous avez probablement rencontrés dans votre travail.

\n\n

1. Vérification des préfixes d'URL (routage, redirections)

\n\n

Supposons que vous écriviez un routeur simple et que vous souhaitiez traiter les URL qui commencent par /admin :

\n\n
<?php\n$uri = $_SERVER['REQUEST_URI'];\n\nif (str_starts_with($uri, '/admin')) {\n    echo "Vous êtes dans le panneau d'administration";\n    // Charger le panneau d'administration\n                

Blogs

Book Recommendations