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

Won*_*ane 6 php regex preg-replace

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

This is CROPSTART not very CROPEND cool.
Run Code Online (Sandbox Code Playgroud)

......应该成为......

This is cool.
Run Code Online (Sandbox Code Playgroud)

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

preg_replace('#\/\/CROPSTART[\s\S]+\/\/CROPEND#', '', $string);
Run Code Online (Sandbox Code Playgroud)

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

有人知道怎么做吗?

谢谢Wonko

Mar*_*cny 19

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

这是因为您的+操作员贪婪 - 它不会在第一个实例停止CROPEND并继续直到它遇到最后一个实例.

+只需在?其后附加一个非贪婪的操作符即可使用它:

preg_replace('/CROPSTART[\s\S]+?CROPEND/', '', $string);
Run Code Online (Sandbox Code Playgroud)