我如何得到中文的 preg_match 2 位数字点(可选)?
How do I get preg_match 2 digit dot (optional) with Chinese?
我试图找出 preg_match 的汉字。我可以通过这样的方式获取汉字
preg_match("/^\p{Han}+/u", $message); //$message = '你好';
但是,有时两位数与 .前面是这样的
$message = '01. 你好' //or '21. 你好'
因此,我的 preg_match 条件在此消息中不正确。如何用点检查这个可选的两位数?
尝试/\p{Han}+/gu
喜欢:
preg_match("/\p{Han}+/u", $message,$result);
或
preg_match_all("/\p{Han}+/u", $message,$result);
可以看看下面的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
我试图找出 preg_match 的汉字。我可以通过这样的方式获取汉字
preg_match("/^\p{Han}+/u", $message); //$message = '你好';
但是,有时两位数与 .前面是这样的
$message = '01. 你好' //or '21. 你好'
因此,我的 preg_match 条件在此消息中不正确。如何用点检查这个可选的两位数?
尝试/\p{Han}+/gu
喜欢:
preg_match("/\p{Han}+/u", $message,$result);
或
preg_match_all("/\p{Han}+/u", $message,$result);
可以看看下面的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