-1

例如我有这种内容

<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 之间的数据?

4

2 回答 2

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;
于 2013-07-17T18:23:38.623 回答
1

不要尝试使用正则表达式解析 HTML:使用正则表达式解析 HTML:为什么不呢?

使用像http://simplehtmldom.sourceforge.net/这样的 PHP DOM 库

于 2013-07-17T18:23:07.553 回答