Maison  >  Article  >  développement back-end  >  Nouvelles fonctions en PHP8 : techniques de recherche de chaînes efficaces pour str_contains()

Nouvelles fonctions en PHP8 : techniques de recherche de chaînes efficaces pour str_contains()

WBOY
WBOYoriginal
2023-05-16 11:40:52895parcourir

PHP8 est sans aucun doute une version importante de PHP à l'heure actuelle. En plus d'apporter de meilleures performances et sécurité, il introduit également de nouvelles fonctionnalités très utiles. L'une des nouvelles fonctionnalités est la fonction str_contains(), qui est utilisée pour rechercher une sous-chaîne spécifiée dans une chaîne.

Dans le passé, nous utilisions généralement la fonction strpos() pour déterminer si une certaine sous-chaîne existe dans une chaîne. Par exemple, pour savoir si la chaîne suivante contient la sous-chaîne "bonjour" :

$string = "Hello, world!";
if (strpos($string, "hello") !== false) {
    echo "Found 'hello' in the string!";
} else {
    echo "Did not find 'hello' in the string!";
}

Le résultat sera "Je n'ai pas trouvé 'bonjour' dans la chaîne !". En effet, la fonction strpos() est sensible à la casse.

La fonction str_contains() n'est pas sensible à la casse. Elle renvoie directement une valeur booléenne indiquant si la chaîne contient la sous-chaîne spécifiée. Par conséquent, le code ci-dessus peut être réécrit à l'aide de la fonction str_contains() :

$string = "Hello, world!";
if (str_contains($string, "hello")) {
    echo "Found 'hello' in the string!";
} else {
    echo "Did not find 'hello' in the string!";
}

Le résultat sera "Trouvé 'bonjour' dans la chaîne !". Étant donné que la fonction str_contains() déterminera si la chaîne contient la sous-chaîne « bonjour », elle ne sera pas sensible à la casse.

Utiliser str_contains() au lieu de strpos() est non seulement plus intuitif, mais aussi plus efficace. Parce que str_contains() utilisera certaines techniques d'optimisation pour améliorer l'efficacité de la recherche de chaînes. Ces techniques d'optimisation incluent :

Optimisation 1 : utiliser l'algorithme de Boyer-Moore

L'algorithme de Boyer-Moore est un algorithme de recherche de chaîne efficace, qui est l'une des implémentations sous-jacentes de la fonction str_contains(). L'idée principale de l'algorithme de Boyer-Moore est d'ignorer autant de caractères invalides que possible afin de réduire le nombre de recherches.

Par exemple, lors de la recherche de la position de la chaîne « bonjour » dans « bonjour tout le monde ! », l'algorithme de Boyer-Moore commencera par faire correspondre le dernier caractère « o » de la chaîne. S'il n'y a pas de correspondance, la distance de saut est calculée en fonction du nombre d'occurrences du caractère. Dans cet exemple, le caractère « o » apparaît deux fois dans la chaîne « bonjour », donc l'algorithme de Boyer-Moore avancera la position de recherche de deux caractères pour éviter des correspondances répétées.

L'utilisation de l'algorithme Boyer-Moore peut considérablement améliorer l'efficacité de la recherche de chaînes, en particulier pour les chaînes et sous-chaînes plus longues.

Optimisation 2 : évitez de copier des chaînes plusieurs fois

Lorsque vous utilisez la fonction strpos() pour rechercher des chaînes, vous devez généralement copier des chaînes et des sous-chaînes à des fins de comparaison. Cela peut entraîner une utilisation accrue de la mémoire, en particulier lorsque les chaînes utilisées sont longues.

La fonction str_contains() évite de copier la chaîne plusieurs fois en utilisant le mécanisme de comptage de références. Le mécanisme de comptage de références est une technologie de gestion de mémoire qui permet de partager la même copie d'une chaîne lorsque plusieurs variables font référence à la même chaîne afin d'éviter plusieurs copies.

L'utilisation du mécanisme de comptage de références peut éviter de copier des chaînes plusieurs fois, réduisant ainsi l'utilisation de la mémoire et améliorant les performances du programme.

Optimisation 3 : implémentée en utilisant du code C

La fonction str_contains() est implémentée en utilisant du code C, elle est donc plus rapide et plus efficace que la fonction strpos(). Lors de la recherche d'un grand nombre de chaînes, l'utilisation de la fonction str_contains() peut grandement améliorer la vitesse d'exécution du programme. La fonction

Résumé

str_contains() est une nouvelle fonction très utile en PHP8, qui peut être utilisée pour rechercher des sous-chaînes spécifiées dans des chaînes. Cela rend non seulement notre code plus intuitif et plus facile à comprendre, mais améliore également les performances du programme grâce à l'utilisation de techniques d'optimisation.

Si vous devez effectuer des recherches de chaînes en PHP, pensez à utiliser la fonction str_contains() pour de meilleures performances et un code plus efficace.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn