我使用下面的代码来获取ul中的所有href标签,文本和文本 标签,但我不知道为什么我没有得到它显示为空的href链接 和锚标签内的文本和ul标签内的文本在一起 但我想在单独的变量中使用它,我不知道我哪里出错了。 任何帮助,将不胜感激。
<?php
$str='<li><a href="test1.php">21.03.2017
<ul>Test1</ul>
</a><p>
<a href="test1"></a>
</p>
</li>
<li><a href="test2.php">21.03.2017
<ul>Text2</ul>
</a><p>
<a href="test2.php"></a>
</p>
</li>';
$dom = new DOMDocument;
@$dom->loadHTML($str);
$liList = $dom->getElementsByTagName('li');
foreach ($liList as $li) {
$output[] = array (
'str' => $li->nodeValue,
'href' => $li->getAttribute('href')
);
}
var_dump($output);
?>
输出
array(2) { [0]=> array(2) { ["str"]=> string(22) "21.03.2017 Test1 " ["href"]=> string(0) "" } [1]=> array(2) { ["str"]=> string(22) "21.03.2017 Text2 " ["href"]=> string(0) "" } }
答案 0 :(得分:0)
href是<a>
代码的属性,而不是<li>
,将代码更改为$dom->getElementsByTagName('a');
,它将开始工作!
答案 1 :(得分:0)
有些事情如下:
$doc = new DOMDocument();
$doc->loadHTML($str);
$a= $doc->getElementsByTagName('a');
foreach($a as $href) {
echo $href->getAttribute('href')."<br />";
}