【问题标题】:Deleting text between two strings in php using preg_replace使用preg_replace删除php中两个字符串之间的文本
【发布时间】:2015-08-05 03:14:03
【问题描述】:

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

This is CROPSTART not very CROPEND cool.

...应该变成这个...

This is cool.

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

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

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

有人知道怎么做吗?

谢谢 旺哥

【问题讨论】:

标签: php regex preg-replace


【解决方案1】:

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

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

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

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

【讨论】:

  • 如果我有“CROPSTART FirstWord CROPEND only this CROPSTART SecWord CROPEND”并且我想得到“only this”,它将如何工作?
猜你喜欢
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
相关资源
最近更新 更多