我在正则表达式中非常非常糟糕,不幸的是,有一次我真的希望我知道它。我有以下函数概述了在正则表达式中嵌入阿拉伯语支持:
function alpha_dash($str)
{
return ( ! preg_match("/^[\-_ \d\p{Arabic}]*\p{Arabic}[\d\p{Arabic}]*$/ui", $str)) ? FALSE : TRUE;
}
现在这是从Here处理的。我想要Alpha和Alpha数字函数的相同支持。我真的不能玩正则表达式,因为我总是把事情搞得一团糟。
希望有人可以真正帮助:)
编辑:
public function alpha($str)
{
return ( ! preg_match("/^([a-z])+$/i", $str)) ? FALSE : TRUE;
}
public function alpha_numeric($str)
{
return ( ! preg_match("/^([a-z0-9])+$/i", $str)) ? FALSE : TRUE;
}
我需要这两个功能来支持阿拉伯语
答案 0 :(得分:1)
我在MY_Form_validation库中有这个代码可以正常工作
public function alpha_ar($str) {
$str = (strtolower($this->CI->config->item('charset')) != 'utf-8') ? utf8_encode($str) : $str;
return (!preg_match("/^([إد ج ح خ ه ع غ ف ق ث ص ض ط ك م ن ت ا أ ل ب ي س ش ظ ز و ة ى لا ر ؤ ء ئ ذ])+$/i", $str)) ? FALSE : TRUE;
}
答案 1 :(得分:0)
嗯,根据关于正则表达式的doc I found on the PHP website,这应该可行:
public function alpha($str)
{
return ( ! preg_match('/^([a-z]|\p{Arabic})+$/iu', $str)) ? FALSE : TRUE;
}
public function alpha_numeric($str)
{
return ( ! preg_match('/^([a-z0-9]|\p{Arabic})+$/iu', $str)) ? FALSE : TRUE;
}
使用它,它应匹配alpha + arabic或alphanum + arabic。试试看。我认为可能需要使用--enable-unicode-properties
开关编译PCRE,但是我不确定是否会检查它。