2017-05-04 34 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

@中性:请再次检查。 –