Classes de filtre standardsZend Framework est fourni avec un jeu de filtres standards, qui sont directement utilisables. AlnumZend_Filter_Alnum est un filtre qui ne retourne que des caractères alphabétiques et des chiffres. Tout autre caractère est supprimé. Options supportées par Zend_Filter_AlnumLes options suivantes sont supportées par Zend_Filter_Alnum:
Utilisation de baseVoyez l'exemple suivant pour le comportement par défaut de ce filtre.
L'exemple ci-dessus retourne 'Thisismycontent123'. Comme vous le voyez, tous les espaces et le double-point sont filtrés.
Autoriser les espacesZend_Filter_Alnum peut aussi autoriser les espaces. Ca peut être utile, voyez l'exemple suivant:
L'exemple ci-dessus retourne 'This is my content 123'. Comme vous le voyez, le double-point est filtré ainsi que les parenthèses, mais pas les espaces. Pour changer allowWhiteSpace après construction de l'objet, utilisez setAllowWhiteSpace() et getAllowWhiteSpace(). AlphaZend_Filter_Alpha est un filtre qui va retourner $value en enlevant tout caractère non alphabétique. Ce filtre propose une option pour autoriser le caractère espace. Options supportées par Zend_Filter_AlphaLes options suivantes sont supportées par Zend_Filter_Alpha:
Utilisation de baseVoici un exemple de base:
L'exemple ci-dessus affiche 'Thisismycontent'. Remarquez que les espaces et le double-point ont été supprimés.
Autoriser les espacesZend_Filter_Alpha peut aussi autoriser les espaces. Ca peut être utile, voyez l'exemple suivant:
L'exemple ci-dessus retourne 'This is my content'. Comme vous le voyez, le double-point ainsi que les chiffres et les parenthèses sont filtrés mais pas les espaces. Pour changer allowWhiteSpace après construction de l'objet, utilisez setAllowWhiteSpace() et getAllowWhiteSpace(). BaseNameZend_Filter_BaseName permet de retourner le nom d'un fichier dans une chaine représentant un chemin vers ce fichier. Options supportées par Zend_Filter_BaseNameIl n'y a pas d'option supplémentaire gérée par Zend_Filter_BaseName. Utilisation de baseVoici un exemple de base:
Ceci va afficher 'filename'.
Ceci affichera 'filename.txt'. BooleanCe filtre transforme toute donnée en valeur BOOLEAN. Ce peut être utile en travaillant avec des bases de données ou des formulaires. Options supportées par Zend_Filter_BooleanLes options suivantes sont supportées par Zend_Filter_Boolean :
Comportement par défaut de Zend_Filter_BooleanPar défaut, ce filtre transtype sa valeur vers un BOOLEEN ; en d'autres termes, il fonctionne comme un appel PHP de type (boolean) $value.
Ceci signifie que sans paramètre additionnel, Zend_Filter_Boolean prend toute valeur d'entrée et retourne un BOOLEEN comme le transtypage PHP vers le BOOLEEN. Changer le comportement de Zend_Filter_BooleanParfois, le transtypage tel que (boolean) peut ne pas suffire. Zend_Filter_Boolean permet ainsi de configurer les types d'entrée à convertir, et ceux à ignorer. Les types suivants sont acceptés :
Toute autre valeur fournie retournera TRUE. Pour préciser les options ci-dessus, plusieurs manières sont données : utilisez des chaînes, des constantes, ajoutez les, utilisez des tableaux... Voyez l'exemple :
Vous pouvez aussi passer une instance de Zend_Config pour préciser les options. Pour préciser ces options après la création de votre objet, utilisez la méthode setType(). Booléens localisésComme déjà précisé, Zend_Filter_Boolean reconnaît les chaînes localisées "yes" et "no". Ceci signifie que vous pouvez demander au client au travers d'un formulaire "oui" ou "non" dans sa propre langue et Zend_Filter_Boolean convertira la valeur vers le booléen approprié. Préciser la locale s'effectue grâce à la clé de configuration locale ou la méthode setLocale().
Désactiver le transtypageIl peut arriver de ne vouloir que reconnaître TRUE ou FALSE et donc retourner les autres valeurs telles quelles. Zend_Filter_Boolean permet un tel comportement via son option casting lorsque réglée sur FALSE. Dans un tel cas, Zend_Filter_Boolean fonctionnera comme décrit dans le tableau ci-dessous qui montre quelles valeurs retournent TRUE ou FALSE. Toute autre valeur non présente dans ce tableau sera retournée telle quelle lorsque l'option casting vaut FALSE.
L'exemple qui suit illustre l'utilisation de l'option casting :
CallbackCe filtre vous permet d'utiliser votre propre fonction en tant que filtre de Zend_Filter. Nul besoin de créer un filtre si une fonction ou méthode fait déja le travail. Options supportées par Zend_Filter_CallbackLes options suivantes sont supportées par Zend_Filter_Callback :
Utilisation de baseL'utilisation de ce filtre est assez simple. Prenos par exemple un filtre qui inverse une chaine.
C'est très simple de passer une fonction à appliquer comme filtre. Dans le cas de méthodes de classes, passez un tableau comme callback.
Pour récupérer la fonction de filtrage actuelle, utilisez getCallback() et pour en affecter une nouvelle, utilisez setCallback().
Default parameters within a callbackIl est aussi possible de définir des paramètres par défaut qui sont alors passés à la méthode appelée lorsque le filtre est exécuté.
L'appel manuel à une telle fonction se serait fait comme cela:
Compression et décompressionCes deux filtres sont capables de compresser et décompresser des chaines, des fichiers ou des dossiers. Options supportées par Zend_Filter_Compress et Zend_Filter_DecompressLes options suivantes sont supportées par Zend_Filter_Compress et Zend_Filter_Decompress :
Adaptateurs de compression supportésLes formats de compression suivants sont supportés par leurs adaptateurs respectifs :
Chaque format de compression possède des caractéristiques propres et ils s'utilisent tous d'une manière commune. Seules leurs options vont différer ainsi que les types de compressions qu'ils offrent (algorithmes, fichiers, chaines et dossiers) Les basesPour créer un filtre de compression vous devez sélectionner le format que vous désirez. La description suivante utilisera l'adaptateur Bz2. Les détails des autres adaptateurs seront précisés plus tard dans la section suivante. Les deux filtres (compression et décompression) sont identiques lorsqu'ils utilisent le même adaptateur. Simplement Zend_Filter_Compress est utilisé pour les opérations de compression alors que Zend_Filter_Decompress est utilisé pour la décompression. Par exemple, si nous voulons compresser une chaine nous devons instancier Zend_Filter_Compress et indiquer un adaptateur.
Les adaptateurs se spécifient donc dans le constructeur. Il est aussi possible de passer des options sous forme de tableau ou d'objet Zend_Config. Si vous souhaitez préciser des options, vous devez alors au minimum indiquer la clé "adapter". Les clés "options" ou "adapterOptions" peuvent ensuite être utilisées et doivent représenter un tableau.
Concernant la décompression, le principe est exactement identique.
Pour récupérer une chaine compressée, il faut indiquer la chaine originale. La valeur "filtrée" récupérée sera alors la chaine compressée, tout simplement.
La décompression suit exactement le même principe.
Créer une archiveCréer une archive fonctionne quasiment de la même manière que la compression d'une chaine. Cependant dans ce cas, nous devons préciser une options supplémentaire indiquant le nom de l'archive à créer.
Dans l'exemple ci-dessus, la chaine est compressée puis retournée dans une archive.
Si vous souhaitez compresser un fichier, vous devez fournir son chemin.
Il est aussi possible de préciser le nom d'un dossier plutôt que d'un fichier. Dans ce cas, tout le dossier sera compressé, récursivement.
Décompresser une archiveDécompresser une archive s'éxecute d'une manière sensiblement identique à la compression. Vous devez passer le paramètre archive ou préciser le nom du fichier.
Certains adaptateurs permettent la décompression d'une archive dans un dossier cible, dans ce cas le paramètre target permet de l'indiquer.
Adaptateur Bz2L'adaptateur Bz2 peut compresser et décompresser:
Cet adaptateur utilise l'extension PHP Bz2. Pour personnaliser la compression, cet adaptateur utilise les options suivantes:
Toutes les options peuvent être passées à l'instanciation ou en utilisant des méthodes. Par exemple pour la tailles des blocs, getBlocksize() et setBlocksize(). La méthode setOptions() est aussi présente, elle accepte un tableau Adaptateur GzL'adaptateur Bz2 peut compresser et décompresser:
Cet adaptateur utilise l'extension PHP Zlib. Pour personnaliser la compression, cet adaptateur utilise les options suivantes:
Toutes les options peuvent être passées en constructeur ou en utilisant des méthodes. Par exemple, pour l'option 'Level', getLevel() et setLevel(). La méthode setOptions() est aussi présente et accepte un tableau. Adaptateur LzfL'adaptateur Lzf peut compresser et décompresser:
Cet adaptateur utilise l'extension PHPLzf. Il n'existe pas d'options pour personnaliser cet adaptateur. Adaptateur RarL'adaptateur Rar peut compresser et décompresser:
Cet adaptateur utilise l'extension PHP Rar.
Cet adaptateur accepte les options suivantes:
Toutes les options peuvent être passées au constructeurs ou via des méthodes. Par exemple, pour l'option 'Target', getTarget() et setTarget().La méthode setOptions() est aussi disponible et accepte un tableau. Tar AdapterL'adaptateur Tar peut compresser et décompresser:
Cet adaptateur utilise le paquet PEAR Archive_Tar. Cet adaptateur accepte les options suivantes:
Toutes les options peuvent être passées au constructeurs ou via des méthodes. Par exemple, pour l'option 'Target', getTarget() et setTarget().La méthode setOptions() est aussi disponible et accepte un tableau.
Adaptateur ZipL'adaptateur Zip peut compresser et décompresser:
Cet adaptateur utilise l'extension PHP Zip. Les options suivantes sont supportées :
Toutes les options peuvent être passées au constructeurs ou via des méthodes. Par exemple, pour l'option 'Target', getTarget() et setTarget().La méthode setOptions() est aussi disponible et accepte un tableau. Decrypt
Ce filtre va décrypter toute chaine grâce aux paramètres utilisés. Des adaptateurs sont utilisés.
Actuellement des aptateurs existent pour les extensions
Pour plus de détails sur l'encryptage de contenu, voyez le filtre Décryptage avec Mcrypt
Pour décrypter une données cryptées avec Si vous n'aviez pas passé de vecteur spécifique à l'encryptage, alors vous devriez récupérer le vecteur utilisé grâce à la méthode getVector(). Sans ce vecteur, aucun décryptage de la données originale n'est possible. Le décryptage s'effectue aussi simplement que l'encryptage.
Decryptage avec OpenSSL
Le décryptage avec
Pour décrypter avec
Optionnellement il peut être nécessaire de passer la passphrase pour décrypter les clés elles-mêmes. Utilisez alors setPassphrase().
Enfin, décryptez le contenu. Voici l'exemple complet:
DigitsRetourne la chaine $value, mais uniquement les chiffres la composant. Options supportées par Zend_Filter_DigitsIl n'y a pas d'option supplémentaire pour Zend_Filter_Digits. Utilisation de baseVoici un exemple de base:
Ceci affiche "2009".
Ceci affiche "5". DirCe filtre retournera le dossier dans une chaine représentant le chemin vers un fichier. Options supportées par Zend_Filter_DirIl n'y a pas d'options supplémentaire pour Zend_Filter_Dir. Utilisation de baseVoici un exemple de base:
Ceci affiche "/etc".
Ceci affiche "C:/Temp". Encrypt
Ce filtre va crypter toute chaine avec les paramètres spécifiés. Des adaptateurs sont utilisés.
Actuellement, il existe des adaptateurs pour les extensions PHP Comme ces deux méthodes d'encryptage sont très différentes, l'utilisation de leurs adaptateurs l'est aussi.
Les méthodes
Cryptage avec Mcrypt
Cet adaptateur nécessite la présence de l'extension PHP
Si vous passez une chaine à la place d'un tableau pour la clé, celle-ci sera utilisée.
Les méthodes
Cryptage avec OpenSSL
Lorsque vous avez installé l'extension PHP
Si vous souhaitez encoder aussi les clés, passez alors une passphrase via
Pour décrypter le document, la passphrase (si utilisée) et les clés enveloppe sont nécessaires.
Ceci signifie que vous devez appeler la méthode
Voici donc un exemple complet de cryptage de données avec
HtmlEntitiesRetourne la chaine $value en convertissant les caractères en leur entité HTML équivalente si elle existe. Options gérées par Zend_Filter_HtmlEntitiesLes options suivantes sont supportées par Zend_Filter_HtmlEntities:
Utilisation de baseVoyez l'exemple qui suit pour le comportement de ce filtre.
Styles de quoteZend_Filter_HtmlEntities permet de changer les styles de quote à filtrer. Ceci est utile si vous voulez laisser intactes les doubles, simples ou les deux types de quotes. Voici un exemple:
Ceci affiche A 'single' and "double". Notez que les 'simples' et les "doubles" quotes ont été filtrées.
L'exemple ci-dessus affichera A 'single' and "double". Notez que seules les "doubles" quotes ont été filtrées.
L'exemple ci-dessus affichera A 'single' and "double". Notez qu'ici aucune des "doubles" ou 'simples' quotes n'ont été altérées. Méthodes d'aidePour changer ou récupérer la valeur de quotestyle après instantiation, les méthodes setQuoteStyle() et getQuoteStyle() peuvent être utilisées. setQuoteStyle() accepte un paramètre $quoteStyle. Les constantes suivantes sont autorisées: ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES Pour changer ou récupérer la valeur de charset après instantiation, les méthodes setCharSet() et getCharSet() peuvent être utilisées. setCharSet() accepte un paramètre $charSet. Voyez "http://php.net/htmlentities" pour une liste des valeurs acceptées. Pour changer ou récupérer la valeur de doublequote après instantiation, les méthodes setDoubleQuote() et getDoubleQuote() peuvent être utilisées. setDoubleQuote() accepte un booléen $doubleQuote. IntZend_Filter_Int permet de transformer une valeur scalaire contenant un chiffre en entier. Options supportées par Zend_Filter_IntIl n'y a pas d'option supplémentaire pour Zend_Filter_Int. Utilisation de baseVoici un exemple de base:
Ceci affichera '-4'. LocalizedToNormalizedCe filtre va transformer toute entrée localisée en sa représentation normalisée. La transformation est effectuée grâce à Zend_Locale en interne. Ceci permet à l'utilisateur de saisir des information dans sa propre locale, et du coté serveur de stocker les informations normalisées relatives.
Les types suivants peuvent être normalisés:
Tout autre type d'entrée sera retourné tel quel, sans tranformation, par ce filtre.
Normaliser des nombresTout type de nombre peut être normalisé, excepté les nombres représentant une notation scientifique. Voici un exemple:
Imaginons que nous utilisoons la locale 'de' de manière globale sur toute l'application. Zend_Filter_LocalizedToNormalized va utiliser cette locale là pour calculer sa sortie. Il est possible de contrôler la normalisation des nombres. Toute options accépté par Zend_Locale_Format peut alors être utilisée. Les plus courantes sont:
Pour plus de détails à ce sujet, voyez le chapitre Zend_Locale. Voici un exemple utilisant la précision:
Normaliser des dates et des tempsLes dates et temps peuvent être normalisés eux aussi. La sortie du filtre sera alors toujours de type tableau.
Imaginons une fois de plus une locale globale 'de'. L'entrée est donc automatiquement reconnue comme date et vous aurez un tableau en sortie. Vous pouvez contrôler la transformation du filtre grâce aux paramètres date_format et locale.
NormalizedToLocalizedCe filtre est l'inverse de Zend_Filter_LocalizedToNormalized et convertira toute entrée normalisée en entrée localisée. Il utilise Zend_Locale pour celà. Ceci permet de représenter une valeur normalisée dans la locale de l'utilisateur, qu'il reconnaitra donc sans problème.
Les types suivants peuvent être localisés:
Tout autre type d'entrée sera retourné tel quel, sans transformation. Localisation des nombresTout type de nombre peut être localisé, à l'exception des nombres représentant une notation scientifique. Comment fonctionne la localisation pour les nombres ?:
Imaginons que vous avez affecté une locale 'de' comme locale de l'application. Zend_Filter_NormalizedToLocalized va utiliser cette locale pour détecter le type de sortie à produire, ceci sous forme de chaine de caractères. Il est aussi possible de contrôler le look de vos nombres localisés. Pour cela vous pouvez préciser toute option que Zend_Locale_Format reconnait. Les plus courantes sont:
Pour plus de détails sur ces options, voyez le chapitre sur Zend_Locale . Voici un exemple utilisant ces options:
Localiser des dates et des tempsLes dates et les temps peuvent aussi être localisés. Des chaines de caractères sont alors retournées, agissant avec la locale définie.
Imaginons que vous ayiez spécifié la locale 'de' au niveau de l'application, celle-ci est alors automatiquement détectée et utilisée pour localiser la date. Bien sûr, vous pouvez contrôler le format d'affichage de vos dates, grâce aux paramètres date_format et locale.
NullCe filtre retournera la valeur NULL si des critères précis sont rencontrés. C'est souvent nécessaire lorsqu'on travaille avec des bases de données et que l'on souhaite une valeur NULL plutôt qu'un booléen ou tout autre type. Comportement par défaut de Zend_Filter_NullPar défaut, ce filtre fonctionne comme la fonction PHP empty(). Donc si empty() retourne true sur la valeur, alors NULL sera retourné par ce filtre
Ceci signifie qu'en l'absence d'une configuration spéciale, Zend_Filter_Null accepte tout type en entrée et retourne NULL dans les mêmes cas que empty(). Toute autre valeur sera retournée telle quelle, sans aucune modification. Changer le comportement de Zend_Filter_NullQuelques fois ça ne suffit pas de filtrer en se basant sur empty(). Ainsi, Zend_Filter_Null permet de déclarer quels types seront convertis. Les types suivants sont gérés:
Il existe plusieurs manières de spécifier les types à filtrer, des constantes, des types ajoutés à la suite, des chaines de caractères, un tableau... Voyez les exemples suivants:
Un objet Zend_Config peut aussi être utilisé pour préciser les types. La méthode setType() existe de même. PregReplaceZend_Filter_PregReplace performs a search using regular expressions and replaces all found elements. The option match has to be given to set the pattern which will be searched for. It can be a string for a single pattern, or an array of strings for multiple pattern. To set the pattern which will be used as replacement the option replace has to be used. It can be a string for a single pattern, or an array of strings for multiple pattern.
You can use getMatchPattern() and setMatchPattern() to set the matching pattern afterwards. To set the replacement pattern you can use getReplacement() and setReplacement().
For a more complex usage take a look into PHP's » PCRE Pattern Chapter. RealPathCe filtre va résoudre un lien ou un chemin en chemin absolu canonique. Toutes références à '/./', '/../' et tout ajout supplémentaire de '/' sera résolu ou supprimé. Aucun caractère de lien symbolique ne sera présent dans le résultat ('/./' ou '/../') Zend_Filter_RealPath retourne FALSE en cas d'echec par exemple si le fichier n'existe pas. Sur les systems BSD, Zend_Filter_RealPath n'échoue pas si seule la dernière partie du chemin n'existe pas, les autres systèmes retourneront FALSE.
Il peut être nécessaire quelques fois de vouloir utiliser ce filtre sur des chemins inexistants. Par exemple récupérer le realpath d'un chemin à créer. Dans ce cas vous pouvez passer FALSE au constructeur, ou utiliser setExists().
StringToLowerCe filtre convertit toute entrée vers des caractères minuscules.
Par défaut, seul le jeu de caractères de la locale en cours sera utilisé. Les caractères provenant d'autres jeux seront ignorés. Cela reste possible de les passer en minuscules si l'extension mbstring est présente dans votre environnement PHP. Indiquez l'encodage voulu à la création du filtre StringToLower ou utilisez sa méthode setEncoding().
StringToUpperCe filtre convertit toute entrée vers une casse majuscule.
Tout comme le filtre StringToLower, seul le jeu de caractères de la locale en cours sera utilisé. Son fonctionnement est le même que celui de StringToLower.
StringTrimCe filtre modifie la chaine pour que certains caractères soient supprimés du début et de la fin de la chaine. Options supportées par Zend_Filter_StringTrimLes options suivantes sont gérées par Zend_Filter_StringTrim:
Utilisation de baseVoici un exemple de base:
Ceci affichera 'This is (my) content:'. Notez que les espaces ont été supprimés. Comportement par défaut de Zend_Filter_StringTrim
Ceci affichera 'This is (my) content'. Notez que les espaces et le double-point ont été supprimés. Vous pouvez aussi passer une instance de Zend_Config ou un tableau avec la clé 'charlist'. Les méthodes setCharList() et getCharList() sont aussi disponibles. IntRetourne la valeur $value en enlevant les caractères représentant une nouvelle ligne. StripTagsCe filtre retourne une chaîne, où toutes les balises HTML et PHP sont supprimées, exceptées celles qui sont explicitement autorisées. En plus de pouvoir spécifier quelles balises sont autorisées, les développeurs peuvent spécifier quels attributs sont autorisés soit pour toutes les balises autorisées soit pour des balises spécifiques seulement.
|