我一直试图从两个标签之间的站点的字符串中删除一段文本。例如:
This is CROPSTART not very CROPEND cool.
...应该变成这个...
This is cool.
这是我尝试过的PHP,通常可以正常工作:
preg_replace('#\/\/CROPSTART[\s\S]+\/\/CROPEND#', '', $string);
但是,当字符串包含多个“CROPEND”时,它将裁剪从CROPSTART到最后一个CROPEND的所有内容。我希望它仅在第一个CROPSTART和第一个CROPEND之间裁剪。
有人知道怎么做吗?
谢谢
元子
最佳答案
这是因为您的+
运算符是贪婪的-它不会在CROPEND
的第一个实例处停止并继续直到遇到最后一个实例。
您可以通过在其后面附加一个+
来使用?
运算符的非贪婪版本:
preg_replace('/CROPSTART[\s\S]+?CROPEND/', '', $string);
关于php - 使用preg_replace删除php中两个字符串之间的文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30407850/