【发布时间】:2019-12-28 11:55:14
【问题描述】:
我有一个解析 img 和 texts 的代码。运行 php 文件中的代码。它只是显示 img src、abc、img src、dfe。而且我的代码不规则。 img 标签可能带有链接。
我想解析 img 和下一个 html。像这样:
Array
(
[0] => Array
(
[src] => http://www.whatever.com
[text] => abc
<br>
<h3>title</h3>
<div class="content">content <a href="link">my link</a></div>
)
[1] => Array
(
[src] => http://goingnowhere.com
[text] => def
<br>
<h3>title 2</h3>
<div class="content">content <a href="link">my link</a>
bla bla bla
</div>
)
)
我该怎么做?我当前的代码:
<?php $sample_html = '
<img src="http://www.whatever.com" alt="" />
abc
<br>
<h3>title</h3>
<div class="content">content <a href="link">my link</a></div>
<img src="http://goingnowhere.com" alt="">
def
<br>
<h3>title 2</h3>
<div class="content">content <a href="link">my link</a>
bla bla bla
</div>
';
$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); ?>
【问题讨论】:
-
trim($image->nextSibling->textContent)只会在下一个项目中给出文本,看起来你想要所有的 HTML 直到下一个<img>标记 - 关于何时停止提取 HTML 是否有任何限制在<img>标签之后? -
我需要img标签、abc等html内容。数据中的 img 和 html。我的 html 代码不规则。我只需要解析 img 和 html。提前致谢。