用一个替换所有事物的发生

时间:2016-08-09 12:04:19

标签: php regex preg-match-all

如果<p>[gallery ids=""]</p>只存在一个,那么如何替换 $string = "/\<p\>\[gallery ids=\"\"\]\<\/p\>/"; $content = "asdfsdfdsafasdfaasfddsaf <p>[gallery ids=""]</p><p>[gallery ids=""]</p><p>[gallery ids=""]</p>"; if (preg_match_all($string, $content, $matches)) { } 的所有事件?

$content

asdfsdfdsafasdfaasfddsaf <p>[gallery ids=""]</p>应为{{1}}

2 个答案:

答案 0 :(得分:2)

使用preg_replace函数的简单解决方案:

$content = 'asdfsdfdsafasdfaasfddsaf <p>[gallery ids=""]</p><p>[gallery ids=""]</p><p>[gallery ids=""]</p>';
$content = preg_replace("/(<p>\[gallery ids=\"\"\]<\/p>){2,}/", "$1", $content);

print_r($content);

答案 1 :(得分:1)

你正在逃避许多事情的方式,你需要用量词找到问题,在这种情况下{1,}:在1和无限次之间。

如果您的内容中有换行符,请添加g全局修饰符。

$content = preg_replace('/(<p>\[gallery ids=""\]<\/p>){1,}/g', '$1', $content);