Heim > Backend-Entwicklung > PHP-Tutorial > Wie verwende ich Regex, um zu vermeiden, dass Text in HTML-Tags während des Ersetzens geändert wird?

Wie verwende ich Regex, um zu vermeiden, dass Text in HTML-Tags während des Ersetzens geändert wird?

Barbara Streisand
Freigeben: 2024-12-01 22:54:11
Original
635 Leute haben es durchsucht

How to Use Regex to Avoid Modifying Text Inside HTML Tags During Replacement?

Regex zur Übereinstimmung außerhalb von HTML-Tags für selektives Tagging

Um Übereinstimmungen innerhalb von HTML-Tags zu verhindern, während preg_replace verwendet wird, um Tags zu bestimmten Wörtern hinzuzufügen Für eine HTML-Seite ist es wichtig, einen regulären Ausdruck zu definieren, der diese Bereiche ausschließt.

Original Muster:

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

Schwäche:

Das obige Muster stimmt auch mit Instanzen der Zielwörter innerhalb von HTML-Tags überein, was unerwünscht ist.

Verbessert Muster:

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

Aufschlüsselung:

  • (asf|foo|barr): Entspricht den Zielwörtern.
  • (?=): Lookahead-Behauptung, die sicherstellt, dass die Übereinstimmung früher auftritt das schließende HTML-Tag (
  • 1*: Entspricht Null oder mehr Zeichen (mit Ausnahme des schließenden HTML-Tags

Wie es Funktioniert:

Dieses Muster stimmt nur dann mit den Zielwörtern überein, wenn ihnen nicht unmittelbar die schließende spitze HTML-Klammer folgt. Dadurch wird der Abgleich außerhalb von HTML-Tags effektiv eingeschränkt und so unbeabsichtigte Änderungen innerhalb dieser Tags verhindert.

Beispiel:

Betrachten Sie den folgenden HTML-Code:

<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. For example, when I try to replace this text:</p>

<pre class="brush:php;toolbar:false"><a href="example.com" alt="yasar home page">yasar</a>
Nach dem Login kopieren

Mithilfe des erweiterten Musters wird das Zielwort „yasar“ abgeglichen und markiert, während die Instanz innerhalb des „alt“-Attributs des Anker-Tags dies tut unberührt bleiben:

<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. For example, when I try to replace this text:</p>

<pre class="brush:php;toolbar:false"><a href="example.com" alt="yasar home page">yasar</a>
So that yasar reads
Nach dem Login kopieren

  1. >

    Das obige ist der detaillierte Inhalt vonWie verwende ich Regex, um zu vermeiden, dass Text in HTML-Tags während des Ersetzens geändert wird?. 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