3

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

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

我需要这两个函数来支持阿拉伯语

4

2 回答 2

1

好吧,根据我在 PHP 网站上找到的关于正则表达式的文档,这应该可以工作:

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,但我不确定是否要检查这一点。

于 2013-06-18T14:34:22.567 回答
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;
}
于 2014-03-01T13:00:27.860 回答