ホームページ  >  記事  >  バックエンド開発  >  PHPで正規表現を使用してHTMLタグを削除する方法

PHPで正規表現を使用してHTMLタグを削除する方法

王林
王林オリジナル
2023-06-24 08:22:391317ブラウズ

Web アプリケーションを作成する場合、多くの場合、ユーザー入力から HTML タグを削除し、プレーン テキスト形式に変換する必要があります。これにより、クロスサイト スクリプティング (XSS) 攻撃が防止され、テキスト コンテンツの読みやすさが向上します。 PHP では、正規表現を使用してこの目標を達成できます。

一般的な方法は、PHP のstrip_tags() 関数を使用することです。この関数は、文字列からすべての HTML タグを削除します。ただし、リンクタグやイメージタグなど、一部のタグを保持したい場合があります。この場合、正規表現が役に立ちます。

まず、正規表現を使用して HTML タグを削除し、プレーン テキストに変換する方法を見てみましょう。以下は簡単な PHP コード例です:

$string = "<p>这是带有<strong> HTML标记 </strong>的文本。</p>";
$text = preg_replace("/<[^>]+>/", '', $string);
echo $text; // 输出: 这是带有 HTML标记 的文本。

この正規表現は、文字列内で「221ca228dd5925defd2da37c42c47c40」で終わるすべてのテキストを検索し、それらを空に置き換えます (つまり、削除) ことを意味します。

次に、特定の HTML タグのみを保持する方法を見てみましょう。 16e3673c8f9326235a5217cdf963cf19 タグと a482408f4345e9b47492d085db8fef6a タグを保持したいとします。以下にサンプル コードを示します。

$string = "<p>这是带有<strong> HTML标记 </strong>的文本,其中有<a href='http://example.com'>链接</a>和<img src='image.jpg'>。</p>";
$text = preg_replace("/<(?!a|img)[^>]*>/", '', $string);
echo $text; // 输出: 这是带有 HTML标记 的文本,其中有<a href='http://example.com'>链接</a>和<img src='image.jpg'>。

この正規表現の意味は、文字列内で「221ca228dd5925defd2da37c42c47c40」で終わるすべてのテキストを検索します。ただし、それらは af1d723b8e2c93e1b6597c641b8676a0 または a482408f4345e9b47492d085db8fef6a タグ。

この目標を達成するには、(?!) 否定先読みを使用できます。この式は正規表現エンジンに、「"98d1f1e4b06596076bf6c7cae507798a" で終わるタグを探しますが、16e3673c8f9326235a5217cdf963cf19 タグや a482408f4345e9b47492d085db8fef6a タグではないタグを探します。」

# #ラベルの境界を一致させるために " " も使用していることに注意してください。これを省略すると、たとえば「3821468c3faa94030f4b16f097ebbb9c」と「19f3790acd1cf428a3b7a3a2efc0c105」。

上記の方法を使用すると、PHP で正規表現を使用して HTML タグを削除し、プレーン テキストに変換できます。これは XSS 攻撃を防ぐための 1 つのステップにすぎないことに注意してください。 Web アプリケーションのセキュリティを強化するには、入力検証、出力フィルタリング、セッション管理などの他のテクノロジの使用が必要になることがよくあります。

以上がPHPで正規表現を使用してHTMLタグを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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