php获取两个不同标签之间的单词

时间:2014-11-12 07:20:10

标签: php html domdocument

我使用DOMDocument类解析网站。

html代码就像这样

<img src="xxxxxx">
abc
<br>
<img src="xxxxxx">
def
<br>
.....

我想要的是提取img src链接以及<img>标记和<br>标记之间的单词作为一对。我正在循环以获取html代码中的所有对。

我可以使用<img>获取所有getElementsByTagName src,但我不知道如何在img和br tag之间获取这些单词。

有没有方法可以配对那些img src和单词?

由于

1 个答案:

答案 0 :(得分:1)

如果你想在之后定位文本,那么只需获取每个img标签。

然后在那之后它到下一个兄弟:

->nextSibling

粗略的例子:

$sample_html = '
<img src="http://www.whatever.com" alt="" />
abc
<br>
<img src="http://goingnowhere.com" alt="">
def
<br>';

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

$data = array();
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
    $data[] = array(
        'src' => $image->getAttribute('src'),
        'text' => trim($image->nextSibling->textContent),
    );
}

echo '<pre>';
print_r($data);

现在看起来应该是这样的:

Array
(
    [0] => Array
    (
        [src] => http://www.whatever.com
        [text] => abc
    )

    [1] => Array
    (
        [src] => http://goingnowhere.com
        [text] => def
    )

)