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

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

Barbara Streisand
リリース: 2024-12-04 09:41:10
オリジナル
527 人が閲覧しました

How Can I Use PHP Regex to Avoid Modifying HTML Tags During Text Replacement?

HTML タグ内の一致を除外するための PHP 正規表現

HTML ドキュメントで preg_replace を使用してテキスト置換を実行する場合、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...</p>
ログイン後にコピー

次の正規表現は、「yasar」を に置き換えようとします。タグ:

preg_replace("/(asf|gfd|oyws)/", '<span>
ログイン後にコピー

残念ながら、この正規表現はアンカー タグの alt 属性内の「yasar」にも一致するため、望ましくない変更が生じます。

アサーションを使用してタグ内の一致を除外する

このような不要な一致を防ぐために、アサーションを利用できます。検索対象の単語 (つまり、「asf」、「gfd」、または「oyws」) が「<」の前に出現しないと主張することにより、または、「>」の後に、HTML タグ内の一致を効果的に除外できます。このアプローチを採用した修正された正規表現は次のとおりです。

/(asf|foo|barr)(?=[^>]*(<|$))/
ログイン後にコピー

先読みアサーション (?=[^>]*(<|$)) により、単語の後に HTML タグ オープナーが必ず続くようになります。 ("<") または文字列の末尾 ("$" で表されます)。これにより、タグ内の一致が効果的に除外されます。

このアサーションを正規表現に組み込むことで、HTML タグを変更せずに置換を実行でき、alt 属性の yasar が変更されないことが保証されます。

<a href="example.com" alt="yasar home page">yasar</a>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート