Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich mit PHP Regex Schlüsselwörter außerhalb von Anker-Tags abgleichen?

Wie kann ich mit PHP Regex Schlüsselwörter außerhalb von Anker-Tags abgleichen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-20 13:29:02355Durchsuche

How to Match Keywords Outside of Anchor Tags Using PHP Regex?

Übereinstimmende Schlüsselwörter außerhalb von HTML-Anker-Tags () mithilfe eines regulären PHP-Ausdrucks

In der Webentwicklung kann es Situationen geben, in denen Sie Sie müssen Schlüsselwörter innerhalb von HTML-Inhalten abgleichen und ersetzen und dabei bestimmte Bereiche wie Hyperlinks meiden. Dies kann mithilfe regulärer PHP-Ausdrücke erreicht werden.

Problemstellung:

Die vorliegende Aufgabe besteht darin, ein Muster für reguläre Ausdrücke zu finden, das mit dem Schlüsselwort „keyword“ übereinstimmt, es aber ausschließt Instanzen, die in Ankertags eingeschlossen sind (Schlüsselwort).

Lösung:

Um dieses Problem effektiv zu lösen, kann der folgende reguläre PHP-Ausdruck verwendet werden verwendet:

<code class="php">$str = preg_replace('~Moses(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~i',
                    '<a href="novo-mega-link.php"></a>', $str);</code>

Erklärung:

  • Moses:Dieser Teil entspricht einfach dem Schlüsselwort „Moses.“
  • (?!: Dies bezeichnet den Beginn einer negativen Lookahead-Behauptung.
  • (?>[^<]*(?:<(?!/ ?ab)[^<]*)*): Dieser Teil erstellt ein rekursives Muster, um eine beliebige Anzahl von Nicht-HTML-Tag-Zeichen oder verschachtelten Tags zu identifizieren, die keine öffnenden Anker-Tags sind.
  • : Entspricht dem schließenden Ankertag.
  • ): Diese Klammer schließt die negative Lookahead-Behauptung.
  • ~i: Der Modifizierer, bei dem die Groß- und Kleinschreibung nicht beachtet wird, sorgt dafür, dass das Muster sowohl für die Groß- als auch für die Kleinschreibung „Moses“ funktioniert.

Arbeitsprinzip:

Anfänglich der reguläre Ausdruck passt zu „Moses“. Wenn jedoch die folgenden Bedingungen erfüllt sind, wird kein Abgleich durchgeführt:

  • Dem Schlüsselwort muss eine Folge von Nicht-HTML-Zeichen folgen.
  • Das Schlüsselwort darf nicht sein gefolgt von einem öffnenden Ankertag.
  • Dem Schlüsselwort muss ein gültiger schließender Ankertag folgen.

Wenn alle diese Bedingungen erfüllt sind, stimmt das Muster nicht mit dem Schlüsselwort überein. Folglich ist es vom Ersatz ausgeschlossen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit PHP Regex Schlüsselwörter außerhalb von Anker-Tags abgleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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