如何在PHP中将多字节字符串拆分为单词? 以下是我迄今所做的,但我想提高代码...如何将多字节字符串拆分为Php中的单词?
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
$arr = mb_split('[\s\[\]().,;:-_]', $str);
有没有办法说一个字是的“阿尔法” -characters序列(不使用符号az,因为我想包括非拉丁字符)
如何在PHP中将多字节字符串拆分为单词? 以下是我迄今所做的,但我想提高代码...如何将多字节字符串拆分为Php中的单词?
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
$arr = mb_split('[\s\[\]().,;:-_]', $str);
有没有办法说一个字是的“阿尔法” -characters序列(不使用符号az,因为我想包括非拉丁字符)
这里试试这个宝贝:
preg_match_all('/[\p{L}\p{M}]+/u', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
# Matched text = $result[0][$i];
}
匹配与他们的口音所有可能的字母作为字:
"
[\p{L}\p{M}] # Match a single character present in the list below
# A character with the Unicode property “letter” (any kind of letter from any language)
# A character with the Unicode property “mark” (a character intended to be combined with another character (e.g. accents, umlauts, enclosing boxes, etc.))
+ # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
"
许多语言不使用单词(中文)。在这种情况下函数应该返回整个字符串吗?在PHP中,explode()是二进制安全的,所以如果你只需要一个分隔符,使用它可能会更快。
不,我需要很多分隔符,每个不是字母的字符都应该是分隔符。在1.0版本中不处理中文版本可能没有问题 – ragnarius
也许你应该使用\w
它?
什么是你的字符串等,什么字符集你正在用吗。 –
\ b字边界怎么样 – 2011-12-07 20:41:58
我正在使用utf-8! – ragnarius