日期:2014-05-17  浏览次数:20482 次

php正则配备div块
$a='<div id="css">1<div>2</div>3</div><div>4</div>';

preg_match_all('/<div id=\"css\">(.*?)<\/div>/',$a,$match);
echo '<pre>';
var_dump($match);

请问高手们:网上写的匹配div都是这样写的,但是我写的时候,发现他不能完整的匹配一个div块! 如这个我这个div id=css他的结束/div在3的后面,但是这样写只能到2那里就结束了,有没有什么方法匹配到他自己的div块?

------解决方案--------------------
http://downloads.sourceforge.net/project/simplehtmldom/simplehtmldom/1.5/simplehtmldom_1_5.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsimplehtmldom%2Ffiles%2F&ts=1332749181&use_mirror=nchc

simplehtmldom 类
简单、实用、高效

完全不需要自己去摆弄正则
------解决方案--------------------
嵌套的标签用递归匹配
PHP code
<?php
$str='<div id="css">1<div>2</div>3</div><div>4</div>';
$pattern='#<div[^<>]*>(([^<>]*|(?R))*)</[^<>]*>#';
preg_match_all($pattern,$str,$matches);

echo $matches[0][0];
//<div id="css">1<div>2</div>3</div>

------解决方案--------------------
探讨
额,那有啥办法,如果是一个页面的代码,我们想把头部和尾部的div去掉,请问有什么好的方案?