我试图找出preg_match中文字符。我可以用某种方式获得中文字符
preg_match("/^\p{Han}+/u", $message); //$message = '你好';
但是,有时两位数的数字。在前面这样的事情
$message = '01. 你好' //or '21. 你好'
因此,我的preg_match条件在此消息中不正确。如何用点检查这个可选的两位数?
答案 0 :(得分:2)
尝试/\p{Han}+/gu
之类的:
preg_match("/\p{Han}+/u", $message,$result);
或
preg_match_all("/\p{Han}+/u", $message,$result);
答案 1 :(得分:1)
您是否可以查看以下php
原型代码,以便仅匹配和提取中文字符?如果它符合预期,请告诉我。
$ more test.php test2.php
::::::::::::::
test.php
::::::::::::::
<?php
$string = 'abc 123 車飛行 abc 5344';
$pattern = '/[^\p{Han}]/u';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>
::::::::::::::
test2.php
::::::::::::::
<?php
$message = "01. 你好";
echo preg_match_all("/^\p{Han}+$/u", $message);
echo "\n";
$message = "你好";
echo preg_match_all("/^\p{Han}+$/u", $message);
echo "\n";
$message = "01。你好";
echo preg_match_all("/^\p{Han}+$/u", $message);
echo "\n";
?>
两个代码的输出是:
1)为了从字符串中仅提取中文字符。
$ php test.php
車飛行
2)为了验证字符串是否只包含中文字符。
$ php test2.php
0
1
0