首頁 >後端開發 >php教程 >如何使用正規表示式避免在替換過程中修改 HTML 標籤內的文字?

如何使用正規表示式避免在替換過程中修改 HTML 標籤內的文字?

Barbara Streisand
Barbara Streisand原創
2024-12-01 22:54:11637瀏覽

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

正規表示式符合HTML 標籤外部以進行選擇性標記

使用preg_replace 將標籤新增至特定單字時防止HTML 標籤內的符合對於HTML頁面,定義排除這些內容的正則表達式至關重要

原始模式:

preg_replace("/(asf|gfd|oyws)/", '<span>

弱點:

上面的模式也會符合目標的實例HTML標籤內的單字,即

增強模式:

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

細分:

  • 細分:
  • 分> >(asf|foo |barr):匹配目標
  • (?=): 前瞻斷言,確保匹配發生在結束 HTML 標記 (1
*:

匹配零或更多字元(不包括結束 HTML 標記

工作原理:

此模式僅在目標單字不符時才匹配目標單字緊接著是結束 HTML 尖括號。它有效地限制了 HTML 標籤外部的匹配,防止其中的無意修改。

範例:

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

考慮以下 HTML:

<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
使用增強模式,目標字「yasar」將被配對並標記,而「alt」屬性內的實例錨標記的將保持不變:
  1. >;

以上是如何使用正規表示式避免在替換過程中修改 HTML 標籤內的文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn