$str = '<div class="xx">
<div   class="office_pageopt">
<span class="red">←</span>
<a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
<a href="./1209977.aspx">回书目</a>
<a href="1209977,23204630.aspx" id="HeadNextLink">下一章</a>
<span class="red">→</span>
</div>
     </div>';
preg_match("/<div[\s]+(class=\"office_pageopt\")>/" ,$str , $s); //我写到这想了2个小时了. 还是没搞定.print_r($s);我要匹配 <div class="office_pageopt">中间的内容</div>.    

解决方案 »

  1.   


    $s = <<<eof
    <div class="xx">
                <div   class="office_pageopt">
                    <span class="red">←</span>
                    <a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
                    <a href="./1209977.aspx">回书目</a>
                    <a href="1209977,23204630.aspx" id="HeadNextLink">下一章</a>
                    <span class="red">→</span>
                </div>
             </div>
    eof;
    if(preg_match('/<div\s*class="office_pageopt">(.*?)<\/div>/is',$s,$arr)){
      print_r($arr);
    }
      

  2.   


    +1 使用贪婪匹配,有一点,注意就是这个正则不适用<div   class="office_pageopt">
                    <div class="red">←</div>
                    <a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
                    <a href="./1209977.aspx">回书目</a>
                    <a href="1209977,23204630.aspx" id="HeadNextLink">下一章</a>
                    <span class="red">→</span>
                </div>
    这种最好用DOM对象做
      

  3.   

    不要自己造轮子,dom已经造了轮子给你,他的效率不是正则能比的,用dom处理是最恰当的
      

  4.   

    呵呵,给DIV加个ID,然后这个完全能用JS的document.getElementById("id").innerHTML就能解决的问题,为何非要用正则来过滤处理呢?
      

  5.   

    if(preg_match('/<div\s*class="office_pageopt">(.*?)<\/div>/Uis',$s,$arr)){
      print_r($arr);
    }
    正则加上一个取消贪婪性的U,