PHP基本正则表达式

时间:2013-07-17 18:19:23

标签: php regex

例如我有这种内容

<div id="t1" class="tt" tag='t2"><div class="t3">tee</div><a href='#'>test</a><span>test</span><div>asdf</div></div>

<div id="t1" class="tt" tag='t2"><div class="t3">tee</div><a href='#'>test</a><span>test</span><div>asdf</div></div>

我正在尝试使用preg_match来获取父div之间的内容,因此这里的父div表示<div id="t1"。我使用preg_match还是有其他方法来获取这些div之间的数据?

2 个答案:

答案 0 :(得分:5)

正则表达式是这项工作的错误工具。你想要一个DOM解析器。

$dom = new DOMDocument;
$dom->loadHTML($html);

$t1 = $dom->getElementById('t1');
echo $t1->nodeValue;

这只会返回文本,如果你想要innerHTML,请尝试:

$dom = new DOMDocument;
$dom->loadHTML($html);

$t1 = $dom->getElementById('t1');

$innerHTML = '';
foreach($t1->childNodes as $child){
    $innerHTML .= $dom->saveHTML($child);
}
echo $innerHTML;

答案 1 :(得分:1)

请勿尝试使用正则表达式解析HTML:Using regular expressions to parse HTML: why not?

使用像http://simplehtmldom.sourceforge.net/

这样的PHP DOM库