繁体   English   中英

PHP preg_match html 中的多个标签

[英]PHP preg_match multiple tags in html

我需要用多个标签分割我的 html。 <h1>标记的开头到但不包括以下<h1>标记。 到目前为止,我的表达方式有效,但只检索第一部分。 专门寻找preg_match解决方案。 理想情况下希望解决方案是动态的(无论 h1 标签之间的内容或有多少部分)。 让我知道(一般来说,对正则表达式来说有点新)。 我知道这可能是一个棘手的问题,因为我通常是 php 的新手。

html

<h1>heading1</h1>
<img>
<p>para1</p>
<p>para2</p>
<h1>heading2</h1>
<img>
<p>para1</p>
<p>para2</p>
<h1>heading3</h1>
<img>
<p>para1</p>
<p>para2</p>

所需的 output 或类似的东西:

array{
  [0]=> <h1>heading1</h1>
        <img>
        <p>para1</p>
        <p>para2</p>

  [1]=> <h1>heading2</h1>
        <img>
        <p>para1</p>
        <p>para2</p>

  [2]=> <h1>heading3</h1>
        <img>
        <p>para1</p>
        <p>para2</p>
}

我现在的表达是:

$regex = '#<\/p>\s*(<h2>.*?)<h2>#s';
$preg = preg_match_all($regex, $content, $matches);
print_r ($matches);

非常感谢您的帮助!

preg_match_all()不会返回重叠匹配。 由于您的正则表达式以<h2>结尾,这是下一场比赛的开始,因此它不会返回下一场比赛。

将下一场比赛的开始放入前瞻中,使其不包括在比赛中。

$regex = '#<\/p>\s*(<h1>.*?)(?=<h1>)#s';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM