Codeigniter alpha和alpha_numeric函数支持阿拉伯语进行验证

时间:2013-04-04 14:06:09

标签: regex codeigniter codeigniter-2

我在正则表达式中非常非常糟糕,不幸的是,有一次我真的希望我知道它。我有以下函数概述了在正则表达式中嵌入阿拉伯语支持:

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;
    }

我需要这两个功能来支持阿拉伯语

2 个答案:

答案 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,但是我不确定是否会检查它。