在字符串中检测中文(多字节)字符

9
$str = "This is a string containing 中文 characters. Some more characters - 中华人民共和国 ";

如何从这个字符串中检测中文字符并打印以第一个字符开头、以"-"结尾的部分?(应该是"中文 characters. Some more characters -")

谢谢!

2个回答

10
我使用 preg_match 和正则表达式解决了这个问题:
$str = "This is a string containing 中文 characters. Some more characters - 中华人民共和国 ";

preg_match(/[\x{4e00}-\x{9fa5}]+.*\-/u, $str, $matches);

谢谢这个……好奇,\x{unicode#} 的使用能力在哪里有文档记录? - philfreo

0

PHP 是否将此存储为 Unicode?如果是,最坏的情况下,您可以逐个字符地遍历字符串,直到找到那些在中文范围内的字符。

还可以查看 PHP:Unicode - 手册


@Josh - 如果你按照Boost的建议去做,你可能还想看一下VonC对这个问题的回答:https://dev59.com/nHM_5IYBdhLWcg3wdy_z - JV.
@boost,是的,PHP正在使用Unicode存储字符串。但我该如何实现它呢?我在PHP方面不是很擅长。 @JV,谢谢,我会看一下的。 - Josh
如果您不将其转换为NCR形式,则在交易过程中可能会导致字符损坏。 - Raptor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接