2016-02-12 17 views
4

我使用這個功能:http://www.seoreviewtools.com/multi-keyword-density-checker-php-script/但我遇到了一些問題,使它與奇怪的法語單詞工作。 (請參閱我的修改版本:http://pastebin.com/m6PjsizX刪除str_word_count的一些引號

正如您所知,str_word_count()不支持UTF-8字符,並且可能會使用第三個參數來「忽略」這些字符。但是,我沒有找到一種方法使它與引號一起工作(在法語中很常見)。

有三種情況法語單詞簡單報價:

  1. 一個letter_quote_word(例如:潔妹,德習俗,L'亞飛,s'intégrer)
  2. 一句話引述(例如:Aujourd'hui,Prud'homme共同,quelqu'un)
  3. 大多在品牌名稱,在這個詞(例如超級 '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金正日阿列爾桑切斯超級」倒案中案亞飛布魯

此外還有很多引號(',`,','等),我希望這可以與所有類型的引號一起使用。

你有解決方案,使其以這種方式工作?

謝謝!

+0

當你想把兩個單詞('j'aime','l'huile')分開時,你想刪除撇號,並保留它們,如果它們是一個單詞的一部分('aujourd'hui','quelqu'un ','超級')?我看到你也想刪除'j'aime'中的'j',對嗎?用'preg_replace'試試''〜\ b \ p {L} [\'\''']〜u''正則表達式。 –

+0

這是一個[demo](https://regex101.com/r/yD8bU8/2) - 它只是匹配單詞首字母后的撇號。 –

+0

確實在演示中效果很好,謝謝。但是,我不明白爲什麼此時函數實際上會打破它,並且在爲前處理「aujourd'hui」時返回' '。這裏是新的來源:http://pastebin.com/kFVWHapr – Cyc

回答

2

你似乎想

  • ,當他們與代表縮短字
  • 記住這是一個字撇號的第一個字母分開兩個字(j'aime,)除去撇號,不包括其中的第二個和最後一個頭寸(如aujourd'hui,quelqu'un,Super')。

我建議的方法除去各1個單字母的後跟有撇號一個單詞的起始處。所有其他情況是當'應該是裏面的這個詞,因此必須保持完整。

'~\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字符串時,必須使用/u修飾符每次調用的preg_replace

+0

請檢查答案是否適合您。如果沒有,請指明失敗的地方。 –

+0

那麼,它工作? –