删除str_word_count的一些引号

时间:2016-02-12 07:51:40

标签: php regex

我正在使用这个功能:http://www.seoreviewtools.com/multi-keyword-density-checker-php-script/但我遇到了一些问题,使它与奇怪的法语单词一起使用。 (请参阅我在此修改后的版本:http://pastebin.com/m6PjsizX

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

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

  1. 一封letter_quote_word(例如:j'aime,d'habitude,l'avion,s'intégrer)
  2. 一句话引用(例如:Aujourd'hui,prud'homme,quelqu'un)
  3. 主要是品牌名称,最后一句话的引用(例如Super',Vendu')
  4. 我想删除一些引号,以便在没有错误的情况下处理System.Windows.Controls.TextBlock(可能使用正则表达式和str_word_count())以获得此结果:

    str_word_count()
      aime la plage aujourd'hui,quelqu'un aimerait-il aller chez Super'pour voir avion bleu

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

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

    谢谢!

1 个答案:

答案 0 :(得分:2)

你似乎想要

  • 在将两个单词(j'aimel'huile)与代表缩短词的第一个字母分开时删除撇号
  • 保留 一个单词的撇号,不包括其中的第二个和最后一个位置(如aujourd'huiquelqu'unSuper')。

我建议采用删除单词开头的每个单个字母的方法,后面跟一个撇号。所有其他情况都是'应该在里面这个词,因此必须保持原样。

'~\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修饰符。