[英]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 之间进行裁剪。
有人知道怎么做吗?
谢谢旺科
但是,当字符串包含多个“CROPEND”时,它会裁剪从 CROPSTART 到最后一个 CROPEND 的所有内容。
这是因为您的+
运算符是贪婪的 - 它不会在CROPEND
的第一个实例处CROPEND
并继续直到遇到最后一个实例。
您可以使用的非贪婪版本+
简单地通过附加操作?
之后:
preg_replace('/CROPSTART[\s\S]+?CROPEND/', '', $string);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.