使用preg_replace删除php中两个字符串之间的文本

时间:2015-05-23 01:02:38

标签: php regex preg-replace

我一直在尝试从两个标签之间的网站中删除一段文字。例如:

This is CROPSTART not very CROPEND cool.

......应该成为这个......

This is cool.

这是我尝试过的PHP,通常它可以工作:

preg_replace('#\/\/CROPSTART[\s\S]+\/\/CROPEND#', '', $string);

但是,当字符串包含多个“CROPEND”时,它会裁剪从CROPSTART到最后一个CROPEND的所有内容。我希望它只能在第一个CROPSTART和第一个 CROPEND之间进行裁剪。

任何人都知道怎么做?

由于 Wonko

1 个答案:

答案 0 :(得分:16)

  

但是,当字符串包含多个“CROPEND”时,它会裁剪从CROPSTART到最后一个CROPEND的所有内容。

这是因为您的+运算符是贪婪的 - 它不会在CROPEND的第一个实例处停止并继续直到它遇到最后一个实例。

您可以使用+运算符的非贪婪版本,只需在其后添加?

preg_replace('/CROPSTART[\s\S]+?CROPEND/', '', $string);