Maison > Article > interface Web > Efficacité de l'utilisation des expressions régulières en PHP Explication détaillée des expressions gourmandes, non gourmandes et backtracking (avec code)
Cette fois, je vais vous apporter une explication détaillée de l'efficacité gourmande, non gourmande et du backtracking de l'utilisation de la régularité en PHP (avec code Remarques sur l'utilisation de la régularité en efficacité gourmande, non gourmande et du backtracking en PHP). De quoi s’agit-il ? Voici des cas concrets.
Tout d'abord, apprenons ce qu'est la gourmandise des expressions régulières et qu'est-ce que la non-gourmandise ? Ou qu'est-ce qu'un quantificateur de priorité correspondant et qu'est-ce qu'un quantificateur de priorité ignorant ?
D’accord, je ne sais pas quel est le concept. Donnons un exemple.
Un étudiant a voulu filtrer le contenu entre eux. C'est ainsi qu'il a rédigé les règles et procédures habituelles.
$str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪
Il semble qu'il n'y ait rien de mal à cela, mais en fait ce n'est pas le cas. Si
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>';
, alors après la procédure ci-dessus, le résultat est
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>'; $str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪 print_r($str); //$str 输出为 <script>alert(document.cookie)</script>
qui ne peut toujours pas obtenir l'effet souhaité. Ce qui précède n'est pas de la cupidité, et certains sont appelés paresse. Le signe du non gourmand est la quantité métacaractère suivi de ?, comme +?, *?, ?? (plus spécial, j'en parlerai dans les prochains blogs), etc. Autrement dit, cela signifie non gourmand. Si vous n'écrivez pas ?, cela signifie gourmand. Par exemple,
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>'; $str = preg_replace('%<script>.+</script>%i','',$str);//非贪婪 print_r($str); //$str 输出为