Preg_Replace不能处理法语字符 - PHP

时间:2015-06-05 19:22:41

标签: php regex

我已经搜索了一段时间,所以希望这不是一个已经多次问过的问题。

我正在尝试在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);

输出会删除所有内容,但不会删除法语字符:à

1 个答案:

答案 0 :(得分:0)

正如评论中所述,htmlentities('à')会给您[3] => /\bà\b/iIt won't match your letter

相反,使用àu标志在模式中启用Unicode:

'/\bà\b/iu'

请参阅demo

IDEONE demo

<?php
$needles=array(
'/\bil\b/i', 
'/\bla\b/i', 
'/\ble\b/i', 
'/\bà\b/iu'
);
print_r($needles);

$result=preg_replace($needles, "", "il y à trois personne dans la salle à manger");
print_r($result);

输出:

y  trois personne dans  salle  manger