如何使用正则表达式匹配div内部的div内容

时间:2015-08-05 16:40:52

标签: php html regex html-parsing

内容

<html>...<div id="endText" class="end-text" jcid="8311"><p>Hello</p>World<div class="ep-source cDGray"></div></div>...</html>

如何匹配

<p>Hello</p>World<div class="ep-source cDGray"></div>

谢谢!

@ Rizier123

$content = '';
if(preg_match('/"endText".+?>.+?(?=<div.+?class="ep-source cDGray">)/i', $html, $contents) &&
    preg_match('/(?<=>).+/i', $contents[0], $contentss))
{
    $content = iconv('GBK', 'UTF-8', $contentss[0]);
    return rtrim('OK' . "\t" . $content);
}
else
{
    return rtrim('SKIP' . "\t" . 'NO_CONTENT');
}

这种方法可以暂时使用,无法解决问题。

1 个答案:

答案 0 :(得分:1)

只需匹配并删除第一级div。

正则表达式(匹配开头div,保存其内部,并匹配最后一个结束div):

/^<div id="endText"[^>]+>(.*?)<\/div>$/ism

PHP示例:

preg_match('/^<div id="endText"[^>]+>(.*?)<\/div>$/ism', $html, $contents);
echo $contents[1];
// returns: <p>Hello</p>World<div class="ep-source cDGray"></div>

id属性添加到正则表达式有助于指定特定的div