Je recherche une fonction php qui prendra une chaîne d'entrée et en retournera une version nettoyée en supprimant tous les caractères spéciaux 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 AZ.
Toute aide très appréciée.
unichars '\p{Latin}' '\p{Alphabetic}' '[^A-Za-z]' | wc -l
== 1192 points de code qui sont de l'alphabet latin mais qui ne sont pas AZ. Il est communément admis que l'ASCII est suffisant pour l'anglais. Ce n'est pas le cas, et c'est pourquoi écrire AZ a une odeur de code .Réponses:
Attention: notez que l'anglais n'est pas limité à AZ.
Essayez ceci pour supprimer tout sauf az, AZ et 0-9:
Si votre définition alphanumérique comprend des lettres dans des langues étrangères et des scripts obsolètes, vous devrez utiliser les classes de caractères Unicode.
Essayer ceci pour ne laisser que AZ:
La raison de l'avertissement est que des mots comme résumé contiennent la lettre
é
qui ne correspondra pas à cela. Si vous souhaitez faire correspondre une liste spécifique de lettres, 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.la source
[\p{Alphabetic}\p{Numeric}]
. J'ai oublié la propriété alphabétique PCRE, mais vous pouvez l'approcher avec[\pL\pM\pN]
.[A-Z]
est toujours faux, parfois .i
mais je n'ai jamais eu à m'inquiéter que d'une démographie anglaise .. J'oublie que beaucoup de gens doivent penser à d'autres langues. BTW, je viens de remarquer que vous êtes l'utilisateur le plus représentant qui n'a jamais posé 1 question. Même Jon Skeet a déjà posé des questions!Au lieu de cela
preg_replace
, vous pouvez toujours utiliser les fonctions de filtrage de PHP en utilisant lafilter_var()
fonction avecFILTER_SANITIZE_STRING
.la source
FILTER_SANITIZE_STRING
? À ma connaissance, le plus proche qui peut être archivé de cette façon est avecFILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH
, mais cela ne laissera pas seulement des lettres et des chiffres, mais aussi des points, des barres obliques, des pourcentages et tout ça.la source