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

Deleting text between two strings in php using 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 之间裁剪。

有人知道怎么做吗?

谢谢 旺科

However, when the string contains multiple "CROPEND" it crops everything from the CROPSTART to the last CROPEND.

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

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

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