我想驗證用戶的輸入是否全寬片假名字符或不?PHP:日本字符驗證:爲什麼平假名驗證針對片假名字符正則表達式?
下面是一組日文字符根據類別
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
陣列
第一值是有效的全寬kataka na,第二個是平假名,第三個和第四個是無效的條目。
我得到下面的輸出。
ナカ => valid
ね => valid
PHP => invalid
ナカPHP => invalid
值得關注的是,爲什麼平假名字符驗證,這個問題存在很多反對平假名字符,而需要的是隻有全寬片假名
在此先感謝。
您需要打開unicode修飾符。 – 2015-02-23 12:59:16
'「/ ^([゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ·ーヽヾヿ] +)$/U「;' – 2015-02-23 12:59:38