【发布时间】:2015-04-24 19:10:14
【问题描述】:
我想验证用户的输入是否为全角片假名字符?
这是一组按类别分类的日文字符
http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml
现在看看下面的代码,我正在尝试验证不同的输入
$pattern 包含所有全角片假名字符
header('Content-Type: text/html; charset=utf-8');
$pattern = "/^([゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ]+)$/";
$values = array("ナカ" ,
"ね",
"PHP",
"ナカPHP",
);
foreach ($values as $value){
echo $value. " => ";
if(preg_match($pattern, $value)){
echo "valid";
}else{
echo "invalid";
}
echo "<br>";
}
$values 数组中的第一个值是有效的全角片假名,第二个是平假名,第三个和第四个是无效条目。
我得到以下输出。
ナカ => valid
ね => valid
PHP => invalid
ナカPHP => invalid
问题是验证平假名字符的原因,这个问题存在于许多平假名字符中,而只需要全角片假名
提前致谢。
【问题讨论】:
-
你需要开启unicode修饰符。
-
"/^([゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ]+)$/u";
标签: php regex validation utf-8 preg-match