Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich reguläre Ausdrücke verwenden, um Text in HTML-Tags zu ändern, ohne die Tags selbst zu beeinflussen?

Wie kann ich reguläre Ausdrücke verwenden, um Text in HTML-Tags zu ändern, ohne die Tags selbst zu beeinflussen?

Patricia Arquette
Freigeben: 2024-11-28 21:20:12
Original
323 Leute haben es durchsucht

How Can I Use Regular Expressions to Modify Text Within HTML Tags Without Affecting the Tags Themselves?

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>
Nach dem Login kopieren

Um das Wort „yasar“ mit einer bestimmten Klasse hervorzuheben, wird der folgende reguläre Ausdruck verwendet:

preg_replace("/(asf|gfd|oyws)/", '<span>
Nach dem Login kopieren

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)(?=[^>]*(<|$))/
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage