Vermeiden Sie HTML-Tag-Interferenzen mit regulären Ausdrücken
Bei der Verwendung regulärer Ausdrücke zur Verarbeitung von HTML-Seiten ist es wichtig, unbeabsichtigte Änderungen an HTML-Tags zu vermeiden . Eine häufige Herausforderung entsteht beim Versuch, Text innerhalb von Tags zu ändern, aber der reguläre Ausdruck wirkt sich auch auf die Tags selbst aus.
Betrachten Sie das oben genannte Beispiel, bei dem eine einfache Textersetzung innerhalb eines bestimmten HTML-Tags gewünscht ist:
<a href="example.com" alt="yasar home page">yasar</a>
Um das Wort „yasar“ mit einer bestimmten Klasse hervorzuheben, wird der folgende reguläre Ausdruck verwendet:
preg_replace("/(asf|gfd|oyws)/", '<span>
Dieser Ausdruck gilt jedoch unerwartet auch ersetzt „yasar“ innerhalb des „alt“-Attributs und ändert das HTML-Tag.
Lösung mit Behauptungen
Um dieses Problem zu verhindern, können Behauptungen verwendet werden, um sicherzustellen, dass die Das Muster stimmt nur mit Text außerhalb von HTML-Tags überein. Behauptungen sind Ausdrücke mit der Breite Null, die auf bestimmte Bedingungen testen, ohne Zeichen zu verbrauchen.
Ein Ansatz besteht darin, eine negative Lookahead-Behauptung zu verwenden, um zu überprüfen, dass auf den übereinstimmenden Text nicht unmittelbar ein „<“ folgt. Zeichen:
/(asf|foo|barr)(?=[^>]*(<|$))/
Dieser Ausdruck stellt sicher, dass das übereinstimmende Wort nicht in einem HTML-Tag erscheint, indem er prüft, ob ihm eine beliebige Anzahl von Nicht-<-Zeichen folgt. Zeichen (.[^>]*) und dann entweder eine öffnende spitze Klammer < oder das Ende der Zeichenfolge $.
Alternativ kann eine Lookbehind-Behauptung verwendet werden, um zu testen, dass dem übereinstimmenden Text kein „>“ vorangestellt ist. Zeichen:
(?<=>)(asf|foo|barr)
Dieser Ausdruck überprüft, ob dem übereinstimmenden Wort eine öffnende spitze Klammer vorangestellt ist, wobei der gesamte Text innerhalb des HTML-Tags ausgeschlossen wird.
Durch die Einbindung dieser Behauptungen in Ihre regulären Ausdrücke können Sie kann sicherstellen, dass Musterübereinstimmungen ausschließlich außerhalb von HTML-Tags erfolgen, wodurch unbeabsichtigte Änderungen an der HTML-Struktur verhindert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich reguläre Ausdrücke verwenden, um Text in HTML-Tags zu ändern, ohne die Tags selbst zu beeinflussen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!