是否存在与Zend Validator相似的Zend Filter?
案例我应该过滤输入=='测试'
$el->addFilter('Identical','test');
此类过滤器不存在的问题。
谢谢, 约瑟夫
答案 0 :(得分:4)
我不确定这个过滤器应该如何工作,因为你的问题并不清楚。无论如何,我做了一些自定义过滤器,它将检查输入字段的值是否等于某个$令牌。如果它们等于输入值则为空字符串。
过滤器如下所示:
// file: APPLICATION_PATH/filters/Identical.php
class My_Filter_Identical implements Zend_Filter_Interface {
/**
* Token with witch input is compared
*
* @var string
*/
protected $_token;
/**
* Set token
*
* @param string
* @return void
*/
public function __construct($token = '') {
$this->_token = $token;
}
/**
* Filtering method
*
* @param string $value value of input filed
* @return string
*/
public function filter($value) {
if ($value !== $this->_token) {
return $value;
}
return '';
}
}
将其应用于给定的表单元素:
require_once (APPLICATION_PATH . '/filters/Identical.php');
$el1->addFilter(new My_Filter_Identical('test'));
当然不是require_once,它可以添加到您的资源自动加载器中,但作为一个例子,我认为现在不需要它。
编辑:
忘记提及pregReplace过滤器。 与上面的自定义过滤器相同,可以使用pregReplace过滤器完成:
$el1->addFilter('pregReplace',array('/test/',''));
但是,正如我所说,我不确定您希望过滤器如何工作。如果您提供更多信息,我可以提供更多帮助。
答案 1 :(得分:1)
您的问题并不是那么清楚 - 您是否想要一个删除单词test
的过滤器?或者你在谈论过滤表单输入?那么举个例子,你想从el
输入中删除test
输入包含的内容吗?
如果您想从输入中删除测试,可以使用Zend_Filter_PregReplace
$filter = new Zend_Filter_PregReplace(array('match' => '/test/', 'replace' => ''));
$input = 'What is this test about!';
$filter->filter($input);
应该给你What is this about!
没有过滤器可以过滤相同的表单输入,如果它被输入到另一个输入我不认为。您可以尝试创建自己的input filter并在输入上执行自己的逻辑。
答案 2 :(得分:1)
目前还不清楚你要做什么。如果你给出更多解释,那就更好了。
我需要删除所有输入,因此使用正则表达式并不好。
如果您只想清除表单元素中的数据,可以使用以下方法之一:
通过将元素的值设置为空来清除元素值。
$ EL->的setValue(空);
或重置所有表单元素
$形式 - >复位();