7 votes

PHP : quand utiliser filter_var au lieu des fonctions php intégrées ?

J'ai remarqué qu'il y a beaucoup de choses que l'on peut faire avec le PHP. filter_var ce qui peut également être fait avec d'autres fonctions.

Par exemple, les filtres FILTER_VALIDATE_REGEXP , FILTER_SANITIZE_ENCODED et bien d'autres ont également leurs fonctions dédiées respectives en PHP.

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

8voto

mario Points 76989

L'avantage de la filter est que vous avez tout en un seul endroit.

Mais vous avez raison, il n'apporte pas beaucoup de nouveautés. Vous pourriez faire la plupart des choses avec des fonctions existantes, en particulier preg_replace ou preg_match au lieu de FILTER_VALIDATE_REGEXP . Ou encore le "typecasting", c'est-à-dire l'utilisation de l'image normale de l'homme, de la femme et de l'enfant. htmlspecialchars au lieu de l'option filtre.

Il y a cependant filter_var_array Le rapport de la Commission européenne sur les résultats de l'évaluation de la qualité de l'eau, où l'un des avantages apparaît clairement. Vous pouvez filtrer des tas de variables par configuration. Et vous pouvez prédéfinir une liste de filtres à appliquer en une seule fois :

$_POST = filter_var_array($_POST, array(
    "text" => FILTER_SANITIZE_ENCODED,
    "id" => FILTER_VALIDATE_INT,
    "title" => FILTER_SANITIZE_ENCODED,
));

J'admets qu'il s'agit d'un exemple de magic_quotes déclenché, mais vous voyez ce que je veux dire. Unification.

6voto

George P Points 590

A ce jour, je n'ai pas trouvé de moyen plus rapide (ou meilleur) de supprimer les caractères spéciaux d'une chaîne de caractères que d'utiliser filter_var

filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH)

Comme beaucoup de choses en PHP, il y a plusieurs façons de les faire. filter_var est pratique.

1voto

Fatal Cleric Points 1

Je viens d'exécuter 50 fois un benchmark microtime côte à côte contre preg_match dans un if déclaration et filter_var_array en validant exactement les mêmes données de réinitialisation, voici les résultats en microtemps :

filter_var_array
microtime: 0.000834226608276

preg_match
microtime: 0.000180006027222

filter_var_array est jolie, mais elle est 4 à 8 fois plus lente que l'application preg_match Donc, si vous avez un site web à fort trafic et que vous préférez un code rapide, je vous recommande preg_match .

Cependant, si vous aimez le code propre et que vous ne vous souciez pas vraiment de la façon dont il s'exécute, alors utilisez filter_var_array qui peut être plus facile à gérer pour appliquer des filtres simples sur de nombreux formulaires de demande et d'entrée.

Mais ce type de facilité peut également être obtenu en écrivant un fichier preg_match pour différents scénarios tels que l'email ou l'alphanumérique, mais gardez à l'esprit que la fonction preg_match lors de l'écriture de l'expression rationnelle, par exemple :

http://blog.php-security.org/archives/76-Holes-in-most-preg_match-filters.html

J'aimerais voir une analyse de l'utilisation de la mémoire pour les deux.

J'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X