Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'avais posté dans un autre forum, mais je me suis dit que j'aurais peut être plus d'informations sur le forum de zf france.
Je vient d'installer le ZF, et en testant les filters, je n'arrive pas à bien comprendre le fonctionnement.
Je m'explique, j'ai le code suivant:
Zend_Loader::loadClass('Zend_Filter'); Zend_Loader::loadClass('Zend_Filter_StripTags'); Zend_Loader::loadClass('Zend_Filter_Alpha'); $chaine = new Zend_Filter(); $chaine ->addFilter(new Zend_Filter_StripTags()) ->addFilter(new Zend_Filter_Alpha()); echo $message = $chaine->filter('<b>bonjour (-è-\' 675767</b>/n'); echo "<br>";
et il m'affiche ceci "bonjourèn"
Donc il me passe bien dans le StripTags mais quand il passe dans le filter Alpha (dans le cas Alnum aussi), il supprime les espaces.
Y a t il un paramètre à ajouter ou dois je créer mon propre filtre avec l'interface si je veux garder les espaces ( et comment le créer dans ce cas) ?
Merci
Bladebo
edit : Changement du titre pour qu'il soit plus parlant
Dernière modification par bladebo (05-06-2007 12:29:20)
Hors ligne
le filter Alpha supprime tous sauf lettres. Il faut créer un filter qui fait exactement que tu veux.
comme example, voila le code pour Zend\Filter\Alnum.php(qui suppime tous sauf lettres et numeros):
require_once 'Zend/Filter/Interface.php'; /** * @category Zend * @package Zend_Filter * @copyright Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Filter_Alnum implements Zend_Filter_Interface { /** * Defined by Zend_Filter_Interface * * Returns the string $value, removing all but alphabetic and digit characters * * @param string $value * @return string */ public function filter($value) { return preg_replace('/[^[:alnum:]]/', '', (string) $value); } }
Hors ligne
Après recherche et les différentes réponses que j'ai eu, cela m'a permis de trouver une piste de recherche.
les filters alpha et alnum suppriment exactement tout ce qui ne correspond pas, espace compris.
Il faut donc créer un nouveau filter ou la fonction sera de ce genre la.
public function filter($value) { return preg_replace('/[^[:alpha:]-[:space:]]/', '', (string) $value); }
Dommage que ce ne soit pas directement dans les fonctions existantes avec un paramètre à ajouter par exemple.
Hors ligne
Pages: 1