繁体   English   中英

使用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 之间进行裁剪。

有人知道怎么做吗?

谢谢旺科

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

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

您可以使用的非贪婪版本+简单地通过附加操作? 之后:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM