0

我有这样的字符串:

<div class="fck_detail">
    <table align="center" border="0" cellpadding="3" cellspacing="0" class="tplCaption" width="1">
        <tbody>
            <tr><td>
            <img alt="nole-1375196668_500x0.jpg" src="http://l.f1.img.vnexpress.net/2013/07/30/nole-1375196668_500x0.jpg" width="500">                
            </td></tr>
            <tr><td class="Image">
                Djokovic hậm hực với các đàn anh. Ảnh: <em>Livetennisguide.</em>
            </td></tr>
        </tbody>
    </table>
    <p>Riêng với Andy Murray, ...</p>
    <p style="text-align:right;"><strong>Anh Hào</strong></p> 
</div>

我想获得内容。如何使用 preg_match 编写此模式。请帮我

4

1 回答 1

1

如果 div 中没有其他 HTML 标记,那么这个正则表达式应该可以工作:

$v = '<div class="fck_detail">Some content here</div>';
$regex = '#<div class="fck_detail">([^<]*)</div>#';
preg_match($regex, $v, $matches);
echo $matches[1];

这里实际的正则表达式是<div class="fck_detail">([^<]*)</div>. PHP 中使用的正则表达式也需要被正则表达式中没有的其他字符包围(我使用了#)。

但是,如果您要解析的是用户提供的任意 HTML,则preg_match根本无法做到这一点。完整的 HTML 解析超出了任何正则表达式的能力,如果您正在解析完整的 HTML 编辑器的输出,这就是您所需要的。

于 2013-07-30T18:29:40.473 回答