如何添加/即興我的代碼西班牙口音會除了正常的字母被認爲是有效的(AZ)PHP正則表達式驗證字母和西班牙口音
我已經在我的代碼如下
public static function IsAlpha($s){
$reg = "#[^a-z\s-]#i";
$count = preg_match($reg, $s, $matches);
return $count == 0;
}
如何添加/即興我的代碼西班牙口音會除了正常的字母被認爲是有效的(AZ)PHP正則表達式驗證字母和西班牙口音
我已經在我的代碼如下
public static function IsAlpha($s){
$reg = "#[^a-z\s-]#i";
$count = preg_match($reg, $s, $matches);
return $count == 0;
}
正如答案發現this question,你可以使用全信Unicode property\p{L}
匹配重音字符。這包括重音的人一起定期a-z
字符,所以在你的表達與此像這樣替換a-z
:
$reg = "#[^\p{L}\s-]#u";
注意,使用這個你需要在你結束分隔符後UTF-8 modifier u
,因爲文檔說這樣的Unicode「字符類型可用於UTF-8模式被選中「。
+1,但沒有我需要的標誌。 – Toto
@ M42良好的捕獲。不區分大小寫的標誌現在是不必要的,除非正則表達式稍後被擴展並且模式的其他部分需要它。 – Wiseguy
在我的情況下,我不得不添加u修飾符(UTF8)才能正常工作。 – user276648
我認爲你可以使用每個字母的hexadecimal representation:
<?php
function IsAlpha($sString)
{
$reg = "#[a-zA-Z\xE1\xE9\xED\xF3\xFA\xC1\xC9\xCD\xD3\xDA\xF1\xD1]+#i";
$count = preg_match_all($reg, $sString, $matches, PREG_OFFSET_CAPTURE);
return $matches;
}
echo '<pre>';
print_r(IsAlpha("abcdefgh ñ á é í ño 123 asd asáéío nmas asllsdasd óúfl ÑABDJÓ ÚñÍÉ"));
echo '</pre>';
我不知道是否有所有的字母,但你可以用這個link添加更多。
潛在重複的問題有答案:[PHP的:PREG:如何匹配像一個墳墓特殊字符?](http://stackoverflow.com/questions/2133758/php-preg-how-to-match-special- chars-like-a-grave) – Wiseguy
這是一個類似的問題,但是,我仍然無法弄清楚如何將它與我現有的正則表達式集成。 – xar
@Wiseguy:你應該發表這個評論作爲答案。 – Toto