你试试这个:
<?php
preg_match_all('@<div\ id=\"a\">(.*)</a>@','<div id="a">444444</a>',$matches);
print_r($matches);
?>

解决方案 »

  1.   

    返回的$matches数组里包含了一些匹配的结果 你可以自己研究一下 或者把页面发给我我帮你写个完整的
      

  2.   

    <?php
        preg_match_all("/<div\ id=\"a\">([^<]+)</a>/i",'<div id="a">444444</a>dgdgdgdfg',$matches);
        print_r($matches);
    ?>
      

  3.   

    $re="/<div id=\"a\">([^<]+)<\/div>/i";
    $str="<div id=\"a\">444444</div>dgdgdgdfg";
    preg_match_all("".$re."",$str,$matches);
    print_r($matches);
      

  4.   

    $re1="/<div id=\"a\">([^<]+)<\/div>/i";
    $str1="<div id=\"a\">444444</div>dgdgdgdfg<div id=\"a\">fhfhfh</div>dgdgdgdfg<div id=\"a\">f7777fh</div>646hfh<div id=\"a\">fgdfggdfgh</div>dgdgdgdfg<div id=\"a\">f80llfh</div>";
    preg_match_all("".$re1."",$str1,$matches);
    foreach($matches[1] as $key=>$value)
    {
    echo $value."<br>";
    }
      

  5.   

    问题我已经解决了~~ 我把我的解答贴上来!
    楼上的那些貌似都没有考虑到有嵌套的情况~ 还有正文中也有可能出现 < >这符号!
    还是很感谢大家的热心帮助。
      
    $match_name = '/(<div[^>]*id=\"name\"[^>]*>)(([^<]+|<(?!\/?div[^>]*>)|<div[^>]*>(?>(?3))*<\/div>)*)(<\/div>)/si';
    preg_match_all($match_name,$html,$matches);