2013-04-04 72 views
2

我在正则表达式中非常非常糟糕,不幸的是这是一次我真的很希望我知道它。我有以下功能概述在正则表达式的支持阿拉伯嵌入:Codeigniter alpha和alpha_numeric函数支持阿拉伯语言进行验证

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

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

+1

那你想干什么?示例输入。期望的结果。您也可以尝试使用单引号而不是双引号。 – Qtax 2013-04-04 14:10:49

+0

我更新了功能,我需要支持阿拉伯语:) – 2013-04-04 14:13:14

+0

http://regexpal.com/是一个很好的资源,用于检查您的正则表达式的 – stormdrain 2013-04-04 14:33:52

回答

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

使用这个,它应该匹配阿尔法+阿拉伯语或阿尔法+阿拉伯语。试一试。我认为它可能需要PCRE与--enable-unicode-properties开关编译,但是,我不确定要检查它。

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