7
votes

PHP quand utiliser filter_var au lieu d'introduire des fonctions PHP

J'ai remarqué qu'il y a beaucoup de choses que vous pouvez faire avec le php filtre_var fonction qui peut également être effectué avec une autre fonction.

Par exemple, les filtres filtre_validate_regexp , filtre_sanitize_encode et beaucoup plus ont aussi leurs fonctions dédiées respectives dans PHP.

Quand dois-je utiliser filtre_var et quand dois-je utiliser les fonctions PHP? Quels sont les avantages et les inconvénients?


6 commentaires

Utilisez PHP_Filter à tout moment, il est intégré (peu plus rapide et vous êtes sûr d'utiliser la bonne validation), si vous ne trouvez pas ce dont vous avez besoin, utilisez-en une sur mesure.


Je ne parlais pas de fonctions personnalisées, car la fonction intégrée sera toujours plus rapide. Je parlais de filtres qui ont déjà une alternative de fonction PHP natif.


Je comprends, mais si vous utilisez un Preg_Match, vous devrez personnaliser la RegExp - je aurais dû dire, DIREGUSMISSE REGEXP avec Preg_Match Désolé de la confusion


Mais avec filtre_validate_regexp, vous devez également personnaliser le Regexp. Bien entendu, utiliser Regexp pour valider une adresse électronique est beaucoup plus lente que Filter_Validate_Email!


@Tiddo: filtre_validate_email utilise une regex en interne. Github.com/php-src/ blob / maître / poste / filtre / ...


Mais probablement déjà compilé et donc plus rapide.


3 Réponses :


8
votes

L'avantage du filtre extension est que vous avez tout au même endroit.

Mais vous avez raison, cela ne fournit pas beaucoup de fonctionnalités nouvelles. Vous pouvez faire la plupart des éléments avec les fonctions existantes, en particulier preg_replace ou preg_match au lieu de filtre_validate_regexp . Ou en utilisant et en utilisant la normale htmlspecialchars au lieu de l'option de filtrage.

Il y a cependant filtre_var_array , où une prestation devient apparente. Vous pouvez filtrer des charges de variables par configuration. Et vous pouvez prédéfinancer une liste de filtres à appliquer tout à la fois : xxx

J'admets que c'est essentiellement un exemple de magic_quotes déclenché, mais vous obtenez la photo . Unification.


0 commentaires

7
votes

à ce jour, je n'ai pas trouvé de manière plus rapide (ou meilleure) de retirer des caractères spéciaux d'une chaîne que d'utiliser filter_var xxx

comme beaucoup de choses dans PHP, il existe plusieurs façons de les faire. filtre_var est pratique.


3 commentaires

Est-ce que cela tient pour chaque fonction filtrante_var qui a un autre équivalent intégré? Ou est-ce seulement pour ce filtre?


Oui, bien pour les versions liées à la chaîne. Jetez un coup d'oeil ici, vous verrez filtrer_flag_strip_high s'applique à certains


Susceptibles de compenser le vote. Je pense que c'est une solution valide et souvent négligée.



1
votes

Je viens d'exécuter un benchmark microtime côte à côte 50 fois contre Preg_Match dans un si instruction et filtre_var_array Validation des mêmes données de réinitialisation exactes, Voici les résultats Microtime: xxx

filtre_var_array est joli mais 4 à 8 fois plus lent que preg_match donc si vous avez un trafic élevé Site Web et préférez le code rapide, je recommanderais Preg_Match .

Toutefois, si vous aimez le code de nettoyage agréable et que vous ne vous souciez pas vraiment de fonctionnement, utilisez filtre_var_array qui peuvent être plus faciles à gérer pour appliquer des filtres simples sur de nombreuses demandes et entrées de formes.

mais ce type de facilité peut également être obtenu en écrivant un Preg_Match Fonction pour différents scénarios tels que le courrier électronique ou alphanumérique mais garder à l'esprit preg_match Sécurité lors de l'écriture de la regex par exemple:

http: //blog.php-security.org/archives/76-holes-in- plus-preg_match-filters.html

J'aimerais voir une compassion d'utilisation de la mémoire sur les deux. < / p>

espère que cela aide


1 commentaires

L'optimisation prématurée est la racine de ..., vous savez.