1

私はオンライン情報管理システムを構築したいと思っています。しかし、ZF2 のバリデーターは中国語を検証できません。中国語の入力を検証するにはどうすればよいですか? カスタムバリデータを作成するには? 作成方法は?どうもありがとうございました!!!

詳細はこちらをご覧ください:

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.
4

1 に答える 1

1

ZF2 には、中国語または日本語のバリデーターはありません。

できることは、独自の小さなバリデータ クラスを構築することです。文字列に中国語の文字が含まれているかどうかの Php チェックと、 PHPを使用して単語が日本語か英語かをチェックする方法を組み合わせて、抽象バリデーターを拡張することで、これら 2 つの小さなバリデーターを構築しました。

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'];
    }
}

このバリデーターを好きな場所で使用できるようになりました。

use Zend\InputFilter\Input;
use MyApp\Validator\IsNotOrientalLanguage;

$input = new Input('blog_post');

$input->getValidatorChain()->attach(new IsNotOrientalLanguage());
于 2013-03-18T02:25:41.180 に答える