Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich PHP Regex verwenden, um die Änderung von HTML-Tags während der Textersetzung zu vermeiden?

Wie kann ich PHP Regex verwenden, um die Änderung von HTML-Tags während der Textersetzung zu vermeiden?

Barbara Streisand
Freigeben: 2024-12-04 09:41:10
Original
398 Leute haben es durchsucht

How Can I Use PHP Regex to Avoid Modifying HTML Tags During Text Replacement?

PHP-Regex zum Ausschließen von Übereinstimmungen innerhalb von HTML-Tags

Beim Durchführen von Textersetzungen mit preg_replace in HTML-Dokumenten ist es wichtig, eine versehentliche Änderung von HTML-Tags zu vermeiden. Betrachten Sie beispielsweise die Aufgabe, bestimmte Wörter in einzuschließen. Tags:

<p>I am making a preg_replace on html page. My pattern is aimed to add surrounding tag to some words in html. However, sometimes my regular expression modifies html tags...</p>
Nach dem Login kopieren

Der folgende reguläre Ausdruck versucht, „yasar“ durch zu ersetzen. Tags:

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

Leider stimmt diese Regex auch mit „yasar“ innerhalb des Alt-Attributs eines Anker-Tags überein, was zu unerwünschten Änderungen führt.

Verwendung von Behauptungen zum Ausschließen von Übereinstimmungen innerhalb von Tags

Um solche unerwünschten Übereinstimmungen zu verhindern, kann eine Behauptung verwendet werden. Durch die Behauptung, dass das gesuchte Wort (z. B. „asf“, „gfd“ oder „oyws“) nicht vor einem „<“ erscheint oder nach einem „>“ können wir Übereinstimmungen innerhalb von HTML-Tags effektiv ausschließen. Hier ist eine modifizierte Regex, die diesen Ansatz verwendet:

/(asf|foo|barr)(?=[^>]*(<|$))/
Nach dem Login kopieren

Die Lookahead-Assertion (?=[^>]*(<|$)) stellt sicher, dass dem Wort entweder ein HTML-Tag-Öffner folgen muss ("<") oder das Ende der Zeichenfolge (dargestellt durch "$"). Dadurch werden Übereinstimmungen innerhalb von Tags effektiv ausgeschlossen.

Durch die Einbindung dieser Behauptung in den regulären Ausdruck können wir Ersetzungen durchführen, ohne HTML-Tags zu ändern, und sicherstellen, dass yasar im Alt-Attribut unberührt bleibt:

<a href="example.com" alt="yasar home page">yasar</a>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich PHP Regex verwenden, um die Änderung von HTML-Tags während der Textersetzung zu vermeiden?. 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