Php zend框架-使用';Alnum';过滤但保留逗号
对于Php zend框架-使用';Alnum';过滤但保留逗号,php,zend-framework,Php,Zend Framework,对于Zend\u Form\u元素\u Text表单元素,是否有一种方法可以使用Alnum过滤器,但仍然保留逗号?输入将是项目的命令分隔标签。 我必须定义自己的过滤器吗?有没有一种方法可以使用“回调”过滤器类型来实现这一点 预期输入为tag1、tag2、tag3 $tags=new Zend_Form_Element_Text('tags'); $tags->setLabel('Tags:'); $tags->addFilters(array('Alnum','StripTags',
Zend\u Form\u元素\u Text
表单元素,是否有一种方法可以使用Alnum
过滤器,但仍然保留逗号?输入将是项目的命令分隔标签。
我必须定义自己的过滤器吗?有没有一种方法可以使用“回调”过滤器类型来实现这一点
预期输入为tag1、tag2、tag3
$tags=new Zend_Form_Element_Text('tags');
$tags->setLabel('Tags:');
$tags->addFilters(array('Alnum','StripTags','StringTrim','HtmlEntities'));
更新1: Zend_Filter_Alnum有一个允许空白的选项,可以通过
$tags->addFilters(array('StripTags','StringTrim','HtmlEntities',new Zend_Filter_Alnum(true)));
因此,预期的输入将是
tag1 tag2 tag3
,但如果有人能建议我一种方法,让它接受tag1,tag2,tag3
,那就太棒了。这只是一个例子,它不应该像在生产环境中那样使用:
class My_Filter_AlnumComma implements Zend_Filter_Interface
{
public $allowComma;
public function __construct($allowComma = false)
{
// have a look at a proper filter construct
// and change me
$this->allowComma = (boolean) $allowComma;
}
public function getAllowComma()
{
return $this->allowComma;
}
public function setAllowComma($allowComma)
{
$this->allowComma = (boolean) $allowComma;
return $this;
}
public function filter($value)
{
$comma = $this->allowComma ? ',' : '';
$pattern = '/[^a-zA-Z0-9' . $comma . ']/';
return preg_replace($pattern, '', (string) $value);
}
}
扩展Zend_Filter_接口并创建您自己的自定义过滤器,如果您首先查看Zend_Filter_Alnum,最多需要10分钟。这是正确的方法,尽管我会查看Zend_Filter_Alnum()复制这一点,而不是上面的内容,因为ZF类支持unicode和实际字母表,而不仅仅是A-Z。@David Caunt:我知道,但这只是一个例子,如果你查一下我在这个问题上遇到的一些问题,告诉他先看看Zend_Filter_Alnum,看看应该如何做。