首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使ZF2的验证器验证中文输入

如何使ZF2的验证器验证中文输入
EN

Stack Overflow用户
提问于 2013-03-17 11:19:09
回答 1查看 165关注 0票数 1

我想建立一个在线信息管理系统,其中将有一些中文输入。但是,ZF2的验证器不能验证中文。我应该怎么做才能验证中文输入?创建自定义验证器?如何创建一个?非常感谢!

Detail see here:

代码语言:javascript
复制
There are actually 3 languages which are not accepted in their own script. These languages
are korean, japanese and **chinese** because this languages are using an alphabet where a
single character is build by using multiple characters.

In the case you are using these languages, the input will only be validated by using the
english alphabet.
EN

回答 1

Stack Overflow用户

发布于 2013-03-18 10:25:41

在ZF2中没有针对中文或日文的验证器。

您可以做的是构建自己的小型验证器类。我将Php check if the string has Chinese charsHow to check if the word is Japanese or English using PHP结合起来,通过extending the abstract validator为您构建了这两个小型验证器:

代码语言:javascript
复制
namespace MyApp\Validator;

use Zend\Validator\AbstractValidator;

// forgive the name of this class
class IsNotOrientalLanguage extends AbstractValidator
{
    /**
     * {@inheritDoc}
     */
    public function isValid($value)
    {
        $this->abstractOptions['messages'] = array();

        if (preg_match('/\p{Han}+/u', $value)) {
            $this->abstractOptions['messages'][] = 'Chinese not allowed.';
        }

        if (preg_match('/[\x{4E00}-\x{9FBF}]/u', $value)) {
            $this->abstractOptions['messages'][] = 'Kankji not allowed.';
        }

        if (preg_match('/[\x{3040}-\x{309F}]/u', $value)) {
            $this->abstractOptions['messages'][] = 'Hiragana not allowed.';
        }

        if (preg_match('/[\x{30A0}-\x{30FF}]/u', $value)) {
            $this->abstractOptions['messages'][] = 'Katakana not allowed.';
        }

        return ! $this->abstractOptions['messages'];
    }
}

现在,您可以在任何需要的地方使用此验证器:

代码语言:javascript
复制
use Zend\InputFilter\Input;
use MyApp\Validator\IsNotOrientalLanguage;

$input = new Input('blog_post');

$input->getValidatorChain()->attach(new IsNotOrientalLanguage());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15457145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档