Top Code 2024, les challenges sont de nouveau disponibles dans les boards pour les participant(e)s => Boards

Les nouvelles fonctions str_ en PHP 8

Avec PHP 8, 3 fonctions ont fait leur apparition pour réaliser ces opérations de façon beaucoup plus naturelle.

Avant PHP 8

Si vous avez déjà manipulé des chaines de caractères en PHP, vous avez forcément utilisé à un moment les fonctions substr ou strpos.

  • substr permet d’extraire un morceau d’une chaine de caractères.
  • strpos permet de connaitre la position d’une chaine de caractères dans une chaine de caractères principale.

Ces fonctions étaient souvent utilisées pour deux choses :

  • substr pour savoir si une chaine de caractères commence (ou termine) par certains caractères
  • strpos pour savoir si une chaine de caractères contient certains caractères

Exemple :

$chaine = 'DEBUT_MILIEU_FIN';

// substr

if (substr($chaine, 0, 5) === 'DEBUT') {
    echo 'DEBUT est au début.';
}

if (substr($chaine, strlen($chaine) - 3, 3) === 'FIN') {
    echo 'FIN est à la fin.';
}

// Ou encore
if (substr($chaine, -3) === 'FIN') {
    echo 'FIN est à la fin.';
}


// strpos

// Avec l'obligation d'utiliser une comparaison stricte
if (strpos($chaine, 'MILIEU') !== false) {
    echo 'MILIEU est dans la chaine';
}

// Si j'oublie ma comparaison stricte
if (strpos($chaine, 'DEBUT') != false) {
    echo 'DEBUT est au début.'; // N'est pas affiché
}

str_starts_with, str_ends_with et str_contains

Avec PHP 8, 3 fonctions ont fait leur apparition pour réaliser ces opérations de façon beaucoup plus naturelle.

str_starts_with

if (str_starts_with($chaine, 'DEBUT')) {
    echo 'DEBUT est au début.';
}

str_ends_with

if (str_ends_with($chaine, 'FIN')) {
    echo 'FIN est à la fin.';
}

str_contains

if (str_contains($chaine, 'MILIEU'))  {
    echo 'MILIEU est dans la chaine';
}

Fini de manipuler des index avec substr.

Fini de devoir utiliser une comparaison stricte car la fonction strpos a 2 types de retour différents.

On a des fonctions qui sont mieux nommées, donc plus explicites, avec un rôle bien défini.

Important

Ces fonctions sont sensibles à la casse :

str_contains($chaine, 'milieu'); // false

Si on recherche le caractère vide, alors ces 3 fonctions retourne true :

str_contains($chaine, ''); // true
str_ends_with($chaine, ''); // true
str_starts_with($chaine, ''); // true

Les fonctions substr et str(i)pos conservent leur utilité pour des cas d’usage différents.


Qui a codé ce superbe contenu ?

Keep learning

Autres contenus à découvrir


Ta newsletter chaque mois

Corrigés, challenges, actualités, veille technique... aucun spam.