我在定义问题时遇到了一些问题,对不好的标题感到抱歉。
我知道REGEX对于HTML很难,但我没有其他选择 我只是告诉你我有什么。
我有以下字符串:
<span id=pink>some short text</span>
more text that can be a few lines
<span id=pink>again a short text</span>
More text that's abiding the same logic
<span id=pink>Repeat</span>...(more of these)
这会重复多次。
现在我想在文本和下一个文本之间提取文本。以上示例的含义我想返回:
现在我尝试了以下正则表达式:
preg_match_all('/<span id=pink>.*?<\/span>(.*?)<span id=pink>.*?</span>/s',$data,$content);
哪个部分有效,但问题是在找到第一个匹配后,它没有检测到关闭前一个组作为下一个组的开启者的<span id=pink>
。与上面的例子有关,它只能找到第一个组,并且有更多&#34;行&#34;在字符串中,它将跳过其他所有组。
编辑:
我该如何解决这个问题?感觉我错过了一些简单的解决方案,是否有一个修改器可能实现这一目标?
谢谢, 埃里克
答案 0 :(得分:0)
基本上我想要的是&#34;关闭&#34;模式被重用为&#34;开放&#34;图案
如果是这种情况,那么你可以使用前瞻:
<span id=pink>.*?<\/span>(.*?)(?=<span|$)
您当然仍然需要使用单行标志。