日期:2014-05-16  浏览次数:20453 次

php正则匹配嵌套<div>标签的问题
php新手, 最近用php写正则匹配 遇到了一个问题

楼主用 preg_match 函数  在php正则匹配网页<div>标签时 想通过特定的id匹配,
即获取 <div id="目标id"> ... </div> 这段内容  楼主采用的正则是 判断到</div>表示结束

这时如果遇到 div 嵌套
 
<div id="目标id">
     <!--中间有不确定数目的<div>标签-->
      <div>
      </div>  <!--楼主的方法在这里匹配结束-->
      <div>
      </div>
       <!--.......-->
</div>

     
就会在第一个</div>标签结束

求问php里怎么样解决?。。
或者有没有现成的可以通过 标签 id来获取标签内所有内容的函数 或者库? 
楼主更加希望php有函数或者库可以一下子拿到整个标签内容  而不要自己手动些正则,平时用python和java比较多,比较懒。。

刚接触php 不太了解   如果能推荐一些比较好的学习网站不甚感激。
------解决方案--------------------
$s =<<< TXT
<div id="tid">
     <!--中间有不确定数目的<div>标签-->
      <div>
      </div>  <!--楼主的方法在这里匹配结束-->
      <div>
      </div>
       <!--.......-->
</div>
TXT;
$s = iconv('gbk', 'utf-8', $s); //如果是 utf-8 的就不需要了

require('phpQuery.php');
$doc = phpQuery::newDocument($s);
//echo $doc->find('#tid')->html(); //可以这样写
echo pq('#tid')->html(); //也可以这样写
     <!--中间有不确定数目的<div>标签-->
      <div>
      </div>  <!--楼主的方法在这里匹配结束-->
      <div>
      </div>
       <!--.......-->


用正则也可以,但每次都要绞尽脑汁,有点得不偿失
而用 phpQuery 类则是只需会用 js 的 jQuery 就行了