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

正则婚配嵌套div ,求PHP实现

2013-01-08 
正则匹配嵌套div ,求PHP实现~如下html串:$str div classam1div classimage1111111111/div

正则匹配嵌套div ,求PHP实现~
如下html串:
$str = '<div class="am1">
    <div class="image">1111111111</div>
    <div class="image">2222222222</div>
    <a href="test.php">link1</a>
 </div>
 <div class="am1">
     <div class="image">1111111111</div>
     <img src="./tt.gif" />
     <div class="image">2222222222</div>
 </div>';
需要匹配出的结果:
    将<div class="am1">中的内容匹配出来, 即:
   1=>     
           <div class="image">1111111111</div>
           <div class="image">2222222222</div>
           <a href="test.php">link1</a>

   2=>     
           <div class="image">1111111111</div>
           <img src="./tt.gif" />
           <div class="image">2222222222</div>
php程序实现,在线等~
        
[解决办法]

引用:
$patten='/(<div class="am1">(*)</div>)/';
preg_match_all($patten,$str,$match);


没有这么简单.因为会有多个</div>,你应该从内层开始查找,然后一层一层的往外,知道匹配到<div class="am1"></div>为止
[解决办法]
<?php
$str = '<div class="am1">
    <div class="image">1111111111</div>
    <div class="image">2222222222</div>
    <a href="test.php">link1</a>
</div>
<div class="am1">
     <div class="image">1111111111</div>
     <img src="./tt.gif" />
     <div class="image">2222222222</div>
</div>';
if (preg_match_all('#<div[^>]*>((?>[^</div>]+
[解决办法]
<a.+?>.+?</a>
[解决办法]
<img.+?/>
[解决办法]
(?R))*)</div>#is', $str, $matches)){
print_r($matches);
}
 ?>

热点排行