如何在php中使用正则表达式匹配两个结束标记?

时间:2013-04-08 02:40:18

标签: php html regex html-parsing

我有一段HTML( NOT 一个完整的HTML文档),其中包含以下几个实例:

    </div>




            some text is here

    </h3>

我想匹配'有些文字在这里',但是我无法用php正则表达式理解多行,换行符和空格。我得到的是:

    preg_match('/<\/div>[\s\r\n\t]*(.*)[\s\n\r\t]*<\/h3>/', $string, $matches);

但这似乎不起作用。我也尝试使用DOMDocument(),但它会抛出各种错误,可能是因为这不是一个完整的HTML文档。

任何想法??

1 个答案:

答案 0 :(得分:1)

使用类似

的内容
preg_match("@</div>(.*?)</h3>@s", $html, $matches);

s PCRE修饰符(在最后@之后)允许.匹配换行符。 .*?已完成,因此它只会匹配第一个 </h3>而不是最后一个。标签之间的数据将在$matches[1]