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

王林
リリース: 2023-06-24 08:50:01
オリジナル
1300 人が閲覧しました

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

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

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

$string = "<p>这是带有<strong> HTML标记 </strong>的文本。</p>";
$text = preg_replace("/<[^>]+>/", '', $string);
echo $text; // 输出: 这是带有 HTML标记 的文本。
ログイン後にコピー

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

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

$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'>。
ログイン後にコピー

この正規表現の意味は、文字列内で「<」で始まり「>」で終わるすべてのテキストを検索します。ただし、それらは < a であってはなりません。 > または < img > タグ。

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

# #ラベルの境界を一致させるために " " も使用していることに注意してください。これを省略すると、たとえば「< a」と「< img」の代わりに「」と「< 入力>」。

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!