如何将其更改为preg_replace()
等效值(不使用循环)?
注意:$text
是utf-8。
do $text = str_replace("* *", "*", $text, $totRepla); while ($totRepla);
答案 0 :(得分:2)
我认为匹配任意长* * * * * *
的正则表达式模式是
/(\* )*\*/
请自行添加其余代码,我现在没有PHP方便提供完整的代码段。
答案 1 :(得分:1)
实际上,字符串函数比正则表达式更有效,如果你有一个使用str_replace的工作解决方案,我认为没有理由使用正则表达式。
http://php.net/manual/en/function.str-replace.php
见文档:
如果你不需要花哨的替换 规则(如正则表达式),你 应始终使用此功能 而不是preg_replace()。
答案 2 :(得分:0)
preg_replace('/\* \*/', '*', $totRepla);
答案 3 :(得分:0)
PCRE相当于:
$text = preg_replace('~(?:[*] )+[*]~', '*', $text);
您的代码表明您没有兴趣知道发生了多少替换,因此您不需要$totRepla
变量。但是,如果我错了,这就是计算的方法:
$text = preg_replace('~(?:[*] )+[*]~', '*', $text, -1, $totRepla);