求正则

有一段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>"

作者: mataofq   发布时间: 2011-06-01

修改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>"

作者: mataofq   发布时间: 2011-06-01

PHP code
preg_match_all('/<tr>.*<\/tr>/U',$str,$out);
$ret=$out[0];


我不确定这个.是不是代表任意字符,我好像记得它是除换行符之外的所有字符?

作者: ahui132811   发布时间: 2011-06-01

PHP code
<?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认为'.'是所有字符,否则.不能匹配换行符

作者: ahui132811   发布时间: 2011-06-01

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

作者: ahui132811   发布时间: 2011-06-01