Lassen Sie uns zunächst verstehen, was von regulären Ausdrücken gierig ist und was nicht gierig ist. Oder was ist ein Matching-Prioritätsquantifizierer und was ist ein Ignorieren des Prioritätsquantifizierers?
Okay, ich weiß nicht, was das Konzept ist.
Ein Student wollte die Inhalte zwischen ihnen filtern. So schrieb er die regulären Regeln und Verfahren.
$str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪
Es scheint, dass nichts falsch ist, aber tatsächlich ist es nicht so. Wenn
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>';
, dann ist das Ergebnis nach dem obigen Verfahren
$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>
Immer noch nicht in der Lage, den gewünschten Effekt zu erzielen. Das Obige ist Nicht-Gier, und manche werden Faulheit genannt. Das Zeichen für Nicht-Gier besteht darin, ? nach dem quantitativen Metazeichen hinzuzufügen, wie z. B. +?, *?, ?? (spezieller, ich werde darüber in einem zukünftigen BLOG schreiben) usw. Das heißt, es bedeutet nicht gierig. Wenn Sie nicht schreiben?, bedeutet es gierig. Zum Beispiel:
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>'; $str = preg_replace('%<script>.+</script>%i','',$str);//非贪婪 print_r($str); //$str 输出为Neueste Artikel des Autors
1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00Aktuelle Ausgabenjavascript - Wie erhalte ich den Inhalt in Klammern mithilfe regulärer Ausdrücke in JS?Aus 1970-01-01 08:00:00000javascript – Eine Zeile Code für den Quellcode von underscore.js schreibenAus 1970-01-01 08:00:00000javascript - Woher wissen Sie, dass der Haken des Versprechens nicht geschrieben ist?Aus 1970-01-01 08:00:00000verwandte ThemenMehr>
Der Computer meldet, dass msvcr110.dll fehlt und wie man das Problem beheben kann
Geldwechsel
So öffnen Sie .dat-Dateien
Baidu SEO-Methode zur Optimierung des Keyword-Rankings
Linux fügt die Update-Quellenmethode hinzu
Inländische Plattform für digitale Währungen
Was ist besser, zuerst zu lernen, C-Sprache oder C++?
403verbotene Lösung