2017-05-04 35 views
1
<?php 
echo preg_replace('/(?<!\pL)(.){1,4}(?!\pL)/','%','Pamiętam i tak będę z tobą jestem jestem i czuweam dfgd....'); 
?> 

怎麼辦呢,要如果jestem意願,從1到4個字符有,不輸出呢?邊界運營商正則表達式PHP多達四個出現的字符

((?<!\pL)(?!\pL)){1,4} 

我想有這樣的結果:

Pamiętam jestem jestem czuweam dfgd.... 
+0

他必須替換所有不是單詞但具有1到4個字符的單詞。我想要這個:example .go。示例%example,因爲.go。有4個字符。 – Neutral

+0

看到我的答案在下面 - 它的工作?如果是,請接受。否則,將詳細信息*添加到問題主體*中。 –

+0

謝謝,那麼你自己寧願我以後可以單獨處理。 – Neutral

回答

0

您可以使用

$s = 'Pamiętam i tak będę z tobą jestem jestem i czuweam dfgd.... Teraz idę do kina. A teraz nie idę.'; 
echo preg_replace('/(?<!\S)\S{1,4}(?!\S)/u','%', $s); 
// => Pamiętam % % % % % jestem jestem % czuweam dfgd.... Teraz % % kina. % teraz % % 

圖案的詳細資料

  • (?<!\S) - 必須有一個空格符號或前立即串的開始...
  • \S{1,4} - 1至4個非空格字符
  • (?!\S) - 立即那些1-4個字符之後,必須有一個空白符號或字符串的結尾。

查看PHP demo

由於您使用的是Unicode字符串,因此請勿忘記/u UNICODE修飾符。

+0

dfgd ....有8個字符,我想要有,不要改變。現在計爲4個字符並更改。我想dfgd ....作爲整體,而不是%..... – Neutral

+0

@中性:請再次檢查。 –