有一段html如下:<tr class='tr'>
<td><a href='#'>helo1</a><td>
</tr>
<tr class='tr'>
<td><a href='#'>helo2</a><td>
</tr>
<tr class='tr'><td><a href='#'>helo3</a><td></tr>求正则通过preg_match_all获得每个tr内容的数组,即:
$ret[0]="<tr class='tr'><td><a href='#'>helo1</a><td></tr>"
$ret[1]="<tr class='tr'><td><a href='#'>helo2</a><td></tr>"
$ret[2]="<tr class='tr'><td><a href='#'>helo3</a><td></tr>"

解决方案 »

  1.   

    修改html如下:<tr class='tr'>
    <td><a href='#'>helo1</a></td>
    </tr>
    <tr class='tr'>
    <td><a href='#'>helo2</a></td>
    </tr>
    <tr class='tr'><td><a href='#'>helo3</a></td></tr>求正则通过preg_match_all获得每个tr内容的数组,即:
    $ret[0]="<tr class='tr'><td><a href='#'>helo1</a></td></tr>"
    $ret[1]="<tr class='tr'><td><a href='#'>helo2</a></td></tr>"
    $ret[2]="<tr class='tr'><td><a href='#'>helo3</a></td></tr>"
      

  2.   

    preg_match_all('/<tr>.*<\/tr>/U',$str,$out);
    $ret=$out[0];我不确定这个.是不是代表任意字符,我好像记得它是除换行符之外的所有字符?
      

  3.   

    <?php$str=" <tr class='tr'> <td><a href='#'>helo1</a></td> </tr>
    <tr class='tr'>
    <td><a href='#'>helo2</a>
    </td>
    </tr>
    <tr class='tr'><td><a href='#'>helo3</a></td></tr>";
    //preg_match_all('/\<tr\>.*\<\/tr\>/sm',$str,$out);
    preg_match_all('/<tr[^>]*>.*<\/tr>/Usm',$str,$out);
    $ret=$out[0];
    var_dump($ret);?>
    U去贪婪
    m多行匹配
    s认为'.'是所有字符,否则.不能匹配换行符
      

  4.   

    又想了下,觉得这样子更快:preg_match_all('/<tr.*<\/tr>/Usm',$str,$out);
      

  5.   


    <?php$str="<tr class='tr'>
    <td><a href='#'>helo1</a></td>
    </tr>
    <tr class='tr'>
    <td><a href='#'>helo2</a></td>
    </tr>
    <tr class='tr'><td><a href='#'>helo3</a></td></tr>";
    $mode="/<tr.*\/tr>/Usm";
    preg_match_all($mode,$str,$ret);
    print_r($ret);?>