PHP正则匹配HTML中指定标签之间内容的写法

PHP正则匹配HTML中指定标签之间内容的写法

假设网页内容如下:

复制代码
<table>
<tr>
    <td></td>
    <td></td>
</tr>
<tr>
    <td></td>
    <td></td>
</tr>
</table>
复制代码

我要匹配的是每一个<tr></tr>之间的内容(当然tr里面有很多内容,这里没有列出来),暂时不考虑tr会嵌套的问题。

首先想到的正则是这样写的:

preg_match_all( '/<tr[^>]*(.*?)<\/tr>/i', $string, $matches );
echo "<pre>";
print_r( $matches);
echo '</pre>';

但运行不了,经网上搜寻资料后改成如下写法后即可:

preg_match_all( '/<tr[^>]*([\s\S]*?)<\/tr>/i', $string, $matches );
echo "<pre>";
print_r( $matches);
echo '</pre>';

理由很简单,回头复习一上正则表达示中【.】、【\s】和【\S】就知道了。

posted @ 2020-03-12 17:05  浮尘微光  阅读(3445)  评论(0编辑  收藏  举报