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());