ホームページ >バックエンド開発 >PHPチュートリアル >正規表現を使用して、置換中に HTML タグ内のテキストの変更を回避するにはどうすればよいですか?

正規表現を使用して、置換中に HTML タグ内のテキストの変更を回避するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-01 22:54:11626ブラウズ

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

選択的タグ付けのために HTML タグの外部と一致する正規表現

preg_replace を使用して HTML タグ内の特定の単語にタグを追加する際に、HTML タグ内で一致しないようにするにはHTML ページの場合、これらを除外する正規表現を定義することが重要です。

元のパターン:

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

弱点:

上記のパターンはターゲットのインスタンスにも一致しますHTML タグ内の単語、つまり望ましくない。

拡張パターン:

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

内訳:

  • (asf|foo |barr): ターゲットと一致しますWords.
  • (?=): HTML 終了タグ (
  • 1*: 0 個以上の文字と一致します (HTML 終了タグ

仕組み:

このパターンは、ターゲットの単語と一致する場合にのみ一致します。の直後に 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>

強化されたパターンを使用すると、ターゲット単語「yasar」が一致してタグ付けされますが、アンカータグの「alt」属性は変更されません:

<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

  1. >

    以上が正規表現を使用して、置換中に HTML タグ内のテキストの変更を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。