匹配拉丁字母,包括塞尔维亚 - 克罗地亚字符

时间:2017-06-05 23:36:50

标签: php codeigniter

我正在尝试在PHP中编写一个正则表达式(正则表达式)来匹配所有拉丁字母,包括那些特定于Serbo-Croatian的字母,例如“ćčđšž”

这是我的代码:

public function alpha_space( $str ) 
{
    return ( ! preg_match( "/^([-a-z0-9_ ])+$/i", $str ) ) ? FALSE : TRUE;
}

我应该如何修改此代码段,以便正则表达式也适用于塞尔维亚克罗地亚字母?

感谢您提出任何想法。

2 个答案:

答案 0 :(得分:2)

这些是Unicode Latin Extended A块的成员,从0x0100到0x017F。您可以使用u标志按代码点限制字符:

$test = "ćčđšž";
$start = "100";
$finish = "17f";
$pattern = "/^[\x{{$start}}-\x{{$finish}}]*$/u";
$result = preg_match($pattern, $test);
var_dump($result);

所以将它扩展到原始模式看起来像这样:

$pattern = "/^[-a-z0-9_ \x{100}-\x{17f}]+$/ui";

答案 1 :(得分:0)

您可以使用正则表达式\p{L}来匹配任何Unicode字母。

这会将您的正则表达式更改为:^([-\p{L}0-9_ ])+$

public function alpha_space($str) 
{
return ( ! preg_match("/^([-\p{L}0-9_ ])+$/i", $str)) ? FALSE : TRUE;
}

Here's a fiddle.