首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

关于preg_match_all的抓取,该如何解决

2013-01-28 
关于preg_match_all的抓取divh1标题1/h1p内容1/pp内容2/ph1标题2/h1p内容1/pp内

关于preg_match_all的抓取

<div>
<h1>标题1</h1>
<p>内容1</p>
<p>内容2</p>
<h1>标题2</h1>
<p>内容1</p>
<p>内容2</p>
<p>内容3</p>
<p>内容4</p>
<h1>标题3</h1>
<p>内容1</p>
<p>内容2</p>
<p>内容3</p>
</div>


我要用preg_match_all()来循环获取从<h1>到下一个<h1>之前的内容即
<h1>标题1</h1>
<p>内容1</p>
<p>内容2</p>
------------
<h1>标题2</h1>
<p>内容1</p>
<p>内容2</p>
<p>内容3</p>
<p>内容4</p>
------------
<h1>标题3</h1>
<p>内容1</p>
<p>内容2</p>
<p>内容3</p>

我想过用
preg_match_all('/<h1>[\w\W]*<(h1|\/div)/U',$html, $out)

但这样抓,会隔一个就跳过,因为第二个的<h1>已经被第一个用了。
[解决办法]
preg_match_all('/<div>(.*)<\/div>/is', $str, $m);
$m = explode('<h1>', substr($m[1][0], 5));
foreach($m as $x)
    echo htmlspecialchars ("<h1>$x") . '<br/>';

热点排行