我想使用 PHP 将文本拆分为单个单词。您知道如何实现这一目标吗?
我的做法:
function tokenizer($text) {
$text = trim(strtolower($text));
$punctuation = '/[^a-z0-9äöüß-]/';
$result = preg_split($punctuation, $text, -1, PREG_SPLIT_NO_EMPTY);
for ($i = 0; $i < count($result); $i++) {
$result[$i] = trim($result[$i]);
}
return $result; // contains the single words
}
$text = 'This is an example text, it contains commas and full-stops. Exclamation marks, too! Question marks? All punctuation marks you know.';
print_r(tokenizer($text));
这是一个好方法吗?您有什么改进的想法吗?
提前致谢!
使用匹配任何 unicode 标点符号的 \p{P} 类,并结合 \s 空白类。
$result = preg_split('/((^\p{P}+)|(\p{P}*\s+\p{P}*)|(\p{P}+$))/', $text, -1, PREG_SPLIT_NO_EMPTY);
这将拆分为一组一个或多个空白字符,但也会吸收任何周围的标点符号。它还匹配字符串开头或结尾的标点字符。这会区分诸如“不要”和“他说‘哎哟!’”等情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)