[英]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.