web-dev-qa-db-fra.com

Fonction pour renvoyer uniquement des caractères alphanumériques d'une chaîne?

Je recherche une fonction php qui prend une chaîne d'entrée et renvoie une version assainie de celle-ci en supprimant tous les caractères spéciaux en ne laissant que des caractères alphanumériques.

J'ai besoin d'une deuxième fonction qui fait la même chose mais ne renvoie que les caractères alphabétiques A à Z.

Toute aide très appréciée.

83
Scott B

Attention: notez que l'anglais n'est pas limité à A-Z.

Essayez this pour tout supprimer sauf a-z, A-Z et 0-9:

$result = preg_replace("/[^a-zA-Z0-9]+/", "", $s);

Si votre définition de alphanumérique inclut des lettres en langues étrangères et des scripts obsolètes, vous devrez utiliser les classes de caractères Unicode.

Essayez this de ne laisser que A à Z:

$result = preg_replace("/[^A-Z]+/", "", $s);

La raison de cet avertissement est que des mots comme résumé contient la lettre é qui ne correspondra pas à cela. Si vous souhaitez faire correspondre une liste de lettres spécifique, ajustez l'expression régulière pour inclure ces lettres. Si vous souhaitez faire correspondre toutes les lettres, utilisez les classes de caractères appropriées, comme indiqué dans les commentaires.

186
Mark Byers

Plutôt que preg_replace, Vous pouvez toujours utiliser fonctions de filtrage de PHP en utilisant la fonction filter_var() avec FILTER_SANITIZE_STRING.

1
Mark Baker