ZF2 中没有这样的中文或日文验证器。
您可以做的是构建自己的小型验证器类。我结合了 PHP 检查字符串是否有中文字符和如何检查单词是日语还是英语,使用 PHP通过为您扩展抽象验证器来构建这两个小型验证器:
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());