J'ai vu beaucoup d'expressions pour supprimer une balise spécifique (ou de nombreuses balises spécifiées) et ne pour supprimer toutes les balises sauf une , mais je n'ai pas trouvé de moyen de supprimer tout sauf plusieurs exclus (c'est-à-dire tous sauf p, b, i, u, a, ul, ol, li
) en PHP. Je suis loin d'être bon avec regex, donc j'aurais besoin d'un coup de main. :) Merci!
strip_tags()
fait exactement cela.
vous pouvez le faire en utilisant strip_tags
fonction
¶ strip_tags - Supprime les balises HTML et PHP d'une chaîne
strip_tags($contant,'tag you want to allow');
comme
strip_tags($contant,'<code><p>');
Si vous avez besoin d'une certaine flexibilité, vous pouvez utiliser une solution basée sur des expressions rationnelles et en tirer parti. strip_tags
comme indiqué ci-dessus devrait toujours être l'approche privilégiée.
Les éléments suivants suppriment uniquement les balises que vous spécifiez (liste noire):
// tags separated by vertical bar
$strip_tags = "a|strong|em";
// target html
$html = '<em><b>ha<a href="" title="">d</a>f</em></b>';
// Regex is loose and works for closing/opening tags across multiple lines and
// is case-insensitive
$clean_html = preg_replace("#<\s*\/?(".$strip_tags.")\s*[^>]*?>#im", '', $html);
// prints "<b>hadf</b>";
echo $clean_html;