PHP - 检查unicode字符 - 不适用于换行符?

时间:2015-03-05 16:44:44

标签: php regex unicode newline

我正在尝试为某些表单验证编写PHP脚本。文本输入的要求之一是它必须包含至少一个unicode字符。我写了这个函数来检查这个。

function containsLetters($str)
{
    return preg_match('/\p{L&}+/', $str);
}

我为它编写的前几个测试用例似乎工作得很好。但后来我尝试用字符串“\ n”来测试它,期待一个错误的结果。相反,它似乎完全崩溃。

我也尝试了这个:

var $test = preg_match('/\p{L&}+/', "\n");
var_dump($test);

也不会运行。

1 个答案:

答案 0 :(得分:2)

在第二次尝试中,您尝试将调用分配给变量,不要 ...

var_dump(preg_match('/\p{L&}/', "\n")); // int(0)

此外,您只需使用\pL,并确保启用u(unicode)修饰符...

function containsLetters($str) {
    return (bool) preg_match('~\pL~u', $str);
}