php – 删除str_word_count的一些引号

我正在使用这个功能:
http://www.seoreviewtools.com/multi-keyword-density-checker-php-script/但我有一些问题,使它与奇怪的法语单词一起工作. (见我修改后的版本:
http://pastebin.com/m6PjsizX)

如您所知,str_word_count()不能与UTF-8字符一起使用,并且可以使用第三个arg来“忽略”那些字符.但是,我没有找到一种方法来使用引号(在法语中非常常见).

法语单词中有三种简单引号:

>一封letter_quote_word(例如:j’aime,d’habitude,l’avion,s’intégrer)
>一句话引用(例如:Aujourd’hui,prud’homme,quelqu’un)
>主要是品牌名称,这个词末尾的引用(例如Super’,Vendu’)

我想删除一些引号,以便处理str_word_count()而不会出错(可能使用正则表达式和preg_replace())以获得此结果:

$str = "J'aime la plage d'aujourd'hui, quelqu'un aimerait-il aller chez Super' pour voir l'avion bleue ?");
MagicFunction($str);
$str = str_word_count($str);
echo $str;

aime la plage aujourd’hui, quelqu’un aimerait-il aller chez Super’ pour voir avion bleu

此外还有很多引号(‘,`,’,’等),我希望这可以用于所有类型的引号.

你有解决方案让它以这种方式工作吗?

谢谢 !

最佳答案 你似乎想要

>当他们将两个单词(j’aime,l’huile)分开时,删除撇号,第一个字母代表一个缩短的单词
>保留一个单词内的撇号,不包括其中的第二个和最后一个位置(如aujourd’hui,quelqu’un,Super’).

我建议采用一种方法来删除一个单词开头的每一个单个字母,后面跟一个撇号.所有其他情况都是’应该在单词内部,因此必须保持完整.

'~\b\p{L}[\'`‘’]\b~u'

regex demo

IDEONE demo

$re = '~\b\p{L}[\'`‘’]\b~u'; 
$str = "J'aime la plage d'aujourd'hui, quelqu‘un aimerait-il aller chez Super’ pour voir l`avion bleue ? l'école L'"; 
$result = preg_replace($re, "", $str);
echo $result;
// => aime la plage aujourd'hui, quelqu‘un aimerait-il aller chez Super’ pour voir avion bleue ? école L'

注意在使用Unicode字符串时,必须在每次调用preg_replace时使用/ u修饰符.

点赞