Vous pouvez utiliser strip_tags et preg_replace pour y parvenir:
function clean($in)
{
// Remove HTML
$out = strip_tags($in);
// Filter all other characters
return preg_replace("/[^a-z]+/i", "", $out);
}
[^a-z]
correspondra à un caractère autre que A à Z, le signe +
précise qu'il doit correspondre à une longueur de la séquence de ces caractères et le /i
-modifier indique qu'il s'agit d'une recherche insensible à la casse. Tous les caractères correspondants seront remplacés par une chaîne vide ne laissant que les caractères restants.
Si vous souhaitez conserver des espaces, vous pouvez utiliser [^a-z ]
à la place et si vous souhaitez conserver les numéros [^a-z0-9 ]
. Cela vous permet de mettre en liste blanche tous les caractères autorisés et de rejeter le reste.
Alors que répond à la question dans le titre, il ne supprime pas les balises html, que le corps suggère qu'il veut enlever ... – Stobor
True. Voir la réponse de Jeremys aussi. –