如何在PHP中编写正则表达式以匹配第一个<p>
标记之后的HTML <H1>
?
例如,如果不等于表达式
,则以下状态if(!preg_match_all('#<p(.*?)<\/p>#', $page_content, $matches)
答案 0 :(得分:0)
在正确编写的HTML(即不是为abusing the loopholes in SGML specification打破各种解析器的HTML)中,所有<h1>
都将具有相应的结束标记。这意味着您只需查找<p>
前面的</h1>
。
<\/h1>[\s\S]*?<p>([\s\S]*?)<\/p>
以上是正则表达式的工作方式,以及a proof of concept:
<\/h1>
字面上匹配</h1>
[\s\S]*?
会匹配所有字符,直到下一个<p>
<p>
字面上匹配<p>
([\s\S]*?)
匹配所有字符,直到下一个</p>
(请注意捕获组 - 此组包含您想要的内容)<\/p>
字面上匹配</p>