Maison > développement back-end > tutoriel php > Analyse de l'efficacité des expressions régulières PHP gourmandes, non gourmandes et backtracking (recommandé)

Analyse de l'efficacité des expressions régulières PHP gourmandes, non gourmandes et backtracking (recommandé)

高洛峰
Libérer: 2023-03-04 17:16:02
original
1884 Les gens l'ont consulté

Tout d’abord, comprenons ce qui est gourmand en expressions régulières et ce qui ne l’est pas ? 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(&#39;%<script>.+?</script>%i&#39;,&#39;&#39;,$str);//非贪婪
Copier après la connexion

Il semble qu'il n'y ait rien de mal, mais en fait ce n'est pas le cas. Si

$str = &#39;<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>&#39;;
Copier après la connexion

alors après la procédure ci-dessus, le résultat est

$str = &#39;<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>&#39;;
$str = preg_replace(&#39;%<script>.+?</script>%i&#39;,&#39;&#39;,$str);//非贪婪
print_r($str);
//$str 输出为 <script>alert(document.cookie)</script>
Copier après la connexion

Toujours incapable d'obtenir l'effet qu'il souhaitait. Ce qui précède n'est pas de la cupidité, et certains sont appelés paresse. Le signe du non-gourmand est d'ajouter ? après le métacaractère quantitatif, comme ?, *?, ?? (plus spécial, j'en parlerai dans le futur BLOG), etc. Autrement dit, cela signifie non gourmand. Si vous n'écrivez pas ?, cela signifie gourmand. Par exemple,

$str = &#39;<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>&#39;;
$str = preg_replace('%<script>.+</script>%i','',$str);//非贪婪
print_r($str);
//$str 输出为 
            
            

            
        
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal