PHP: moyen le plus rapide pour vérifier les caractères invalides (tous sauf a-z, A-Z, 0-9, #, -,., $)?
Je dois vérifier la mémoire tampon d'entrée à un PHP serveur socket aussi vite que possible. Pour ce faire, j'ai besoin de savoir si le message d'entrée $buffer contient tout autre personnage(s) que les suivantes: a-z, A-Z, 0-9, #, -, . et $
Je suis actuellement en utilisant la fonction ereg, mais me demande si il existe des moyens pour optimiser la vitesse. Je devrais peut-être utiliser une autre fonction ou un autre regex?
if (ereg("[A-Za-z0-9]\.\#\-$", $buffer) === false)
{
echo "buffer only contains valid characters: a-z, A-Z, 0-9, #, -, ., $";
}
source d'informationauteur Tom
Vous devez vous connecter pour publier un commentaire.
Essayer cette fonction:
[^A-Za-z0-9.#\-$]
décrit n'importe quel caractère qui n'est pas valide. Sipreg_match
trouve une correspondance (un caractère non valide), il sera de retour 1 et 0 autrement. En outre!1
est faux et!0
est vrai. AinsiisValid
retourne faux si un caractère non valide est trouvé et vrai autrement.Autorisant uniquement les caractères a-z en majuscules ou en minuscules..
L'ajout de numéros..
D'ajouter d'autres caractères pour permettre (dans ce cas, le point d'exclamation)..
(Caractères supplémentaires doit être précédée d'un "\" comme indiqué.)
La
preg
famille de fonctions est un peu plus rapide queereg
. À tester pour les caractères non valides, essayez quelque chose comme:Vous aurez envie de passer à l'aide de
preg
au lieu deereg
. Leereg
famille de fonctions ont été dépréciés, et (depuis php 5.3) utilisez-les pour lancer un PHP warning, et ils seront supprimés de la langue rapidement. Aussi, il a été anecdotique de la sagesse que le preg fonctions sont, en général, plus rapide que ereg.Comme pour la vitesse, basé sur mon expérience et le code que j'ai vu dans ma carrière, l'optimisation de ce type de chaîne de la performance serait prématuré à ce stade. Enveloppez la comparaison dans certaines logiques fonction ou une méthode
et puis, quand/si vous constatez que ce est un problème de performances, vous pouvez appliquer un besoin d'optimisation en un seul endroit.
Utilisation preg plutôt que, son plus rapide, et ereg a été abandonné.
preg_match est à la fois plus rapide et plus puissant que ereg:
ou tourner autour de: