PHP中的正则表达式,用于匹配第一个'</p> <h1>'标记之后的HTML'<p>'

时间:2016-10-12 21:24:06

标签: php html regex

如何在PHP中编写正则表达式以匹配第一个<p>标记之后的HTML <H1>

例如,如果不等于表达式

,则以下状态
if(!preg_match_all('#<p(.*?)<\/p>#', $page_content, $matches)

1 个答案:

答案 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>