Wie können reguläre Ausdrücke verwendet werden, um Schlüsselwörter außerhalb von HTML-Anker-Tags in PHP abzugleichen?

Susan Sarandon
Freigeben: 2024-10-20 13:33:03
Original
666 Leute haben es durchsucht

How Can Regular Expressions Be Used to Match Keywords Outside HTML Anchor Tags in PHP?

Übereinstimmung von Schlüsselwörtern außerhalb von HTML-Anker-Tags mithilfe regulärer Ausdrücke in PHP

Eine häufige Herausforderung bei der Verarbeitung von HTML-Inhalten ist die Notwendigkeit, bestimmte Vorgänge auszuführen auf bestimmte Schlüsselwörter im Text. Allerdings ist es oft notwendig, Instanzen des Schlüsselworts auszuschließen, die in bestimmten HTML-Elementen erscheinen, wie z. B. Anker-Tags ().

Diese Situation entsteht, wenn Sie Schlüsselwortvorkommen durch Links zu a ersetzen möchten Wörterbuchdefinition, aber nur, wenn das Schlüsselwort nicht bereits in einem Ankertag mit einer angegebenen Ziel-URL eingeschlossen ist. Um dies zu erreichen, muss ein regulärer PHP-Ausdruck erstellt werden, der mit dem Schlüsselwort übereinstimmt und gleichzeitig bestimmte Muster in Anker-Tags ausschließt.

Die Lösung liegt in der Verwendung einer negativen Lookahead-Behauptung, um diesen Ausschluss zu erzwingen. Der folgende reguläre Ausdruck gleicht und ersetzt Schlüsselwortvorkommen nur dann effektiv, wenn sie nicht in Ankertags vorkommen:

<code class="php">$str = preg_replace('~Moses(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~i',
                    '<a href="dictionary.php?k=keyword"></a>', $str);</code>
Nach dem Login kopieren

Die negative Lookahead-Behauptung, eingeschlossen in (?>...), stellt sicher, dass das Schlüsselwort vorhanden ist Es darf kein öffnender Ankertag vorangestellt und kein schließender Ankertag folgen. Der negative Lookahead wertet den Rest der Zeichenfolge aus, ohne irgendwelche Zeichen zu verbrauchen, sodass die Hauptabgleichsregel nach dem Lookahead fortgesetzt werden kann.

In diesem speziellen Fall stellt der negative Lookahead sicher, dass auf Moses nicht unmittelbar die folgende Sequenz folgt:

  1. Beliebig viele Nicht-< Zeichen
  2. Ein öffnendes Ankertag, das nicht selbstschließend ist
  3. Beliebige Anzahl nicht-< Zeichen
  4. Ein schließendes Anker-Tag

Wenn diese Sequenz vor dem Moses-Schlüsselwort fehlt, ist der Lookahead erfolgreich und zeigt an, dass sich das Schlüsselwort nicht in einem Anker-Tag befindet. Dadurch kann die Haupt-Matching-Regel das Schlüsselwort durch das gewünschte Linkformat ersetzen.

Um unbeabsichtigte Ersetzungen zu vermeiden, ist es wichtig, den regulären Ausdruck gründlich anhand verschiedener Eingabeszenarien zu testen, um konsistente und genaue Ergebnisse sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie können reguläre Ausdrücke verwendet werden, um Schlüsselwörter außerhalb von HTML-Anker-Tags in PHP abzugleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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