Comment supprimer les balises HTML à l'aide d'une expression régulière en PHP

王林
Libérer: 2023-06-24 08:50:01
original
1300 Les gens l'ont consulté

Lors de l'écriture d'applications Web, nous devons souvent supprimer les balises HTML des entrées utilisateur et les convertir au format texte brut. Cela empêche les attaques de cross-site scripting (XSS) et améliore la lisibilité du contenu textuel. En PHP, vous pouvez utiliser des expressions régulières pour atteindre cet objectif.

Une méthode courante consiste à utiliser la fonction strip_tags() de PHP. Cette fonction supprime toutes les balises HTML de la chaîne. Cependant, il existe des cas où vous souhaiterez peut-être conserver certaines balises, telles que les balises de lien et d'image. Dans ce cas, les expressions régulières sont utiles.

Tout d'abord, voyons comment utiliser des expressions régulières pour supprimer les balises HTML et les convertir en texte brut. Ce qui suit est un exemple de code PHP simple :

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

Cette expression régulière signifie : rechercher tout le texte de la chaîne qui commence par "<" et se termine par ">" et remplacez-le. supprimé).

Voyons maintenant comment conserver uniquement certaines balises HTML. Supposons que nous souhaitions conserver les balises < a > Voici un exemple de code :

$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'>。
Copier après la connexion

Cette expression régulière signifie : rechercher tout le texte de la chaîne qui commence par "<" et se termine par ">", mais il ne doit pas être < ; > ou <

Nous pouvons utiliser (?!) une anticipation négative pour atteindre cet objectif. Cette expression indique au moteur d'expressions régulières : "Recherchez une balise qui commence par "<" et se termine par ">" mais qui n'est pas une balise < a > ou < img >

#. 🎜🎜# Veuillez noter que nous utilisons également " " pour correspondre aux limites de l'étiquette. En effet, si nous l'omettons, par exemple en utilisant "" et "< entrée >".

En utilisant la méthode ci-dessus, vous pouvez utiliser des expressions régulières en PHP pour supprimer les balises HTML et les convertir en texte brut. Veuillez noter qu'il ne s'agit que d'une étape dans la prévention des attaques XSS. Il est souvent nécessaire d'utiliser d'autres technologies telles que la validation des entrées, le filtrage des sorties et la gestion des sessions pour améliorer la sécurité des applications Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!