【发布时间】:2015-08-20 20:38:18
【问题描述】:
我已经搜索了一段时间,所以希望这不是一个已经被问过很多次的问题。
我正在尝试在 php 上编写一个脚本,该脚本将从字符串中删除停用词,然后将其分解为单词数组。停用词可以是英语或法语。
目前以下内容不适合我,因为它不会删除法语字符:
$needles=array(
'/\bil\b/i',
'/\bla\b/i',
'/\ble\b/i',
'/\b'. htmlentities('à') .'\b/i'
);
print_r($needles);
$result=preg_replace($needles, "", htmlentities("il y à trois personne dans la salle à manger"));
print_r($result);
输出删除了所有内容,但没有删除法语字符:à
【问题讨论】:
-
为什么在这里使用
htmlentities()? -
如果您事先在输入和正则表达式模式上应用
htmlentities(),那么它将变为&a…;→ 其中单词\b边界在任一端都不匹配。 -
确实,
htmlentities()必须在包含文本之前使用(如果需要)在 html 中。如果您需要先编辑字符串,请不要使用它。 -
不得不说我很困惑,因为我收到的文本有这些口音,认为 htmlentities 至少可以让我将所有内容标准化为 UTF 8。在这里做什么,甚至替换为 à ;不会从字符串中删除重音字符。
-
啊! UTF8 不是你想的那样。