我如何在php中解析这个html?

时间:2016-11-01 00:20:00

标签: php html parsing firefox

我已经将我的Firefox书签导出为html,因此我可以将我的大量音乐集合下载到手机上,我的问题是我知道的并不容易。

我的意图是使用PHP将html解析为URL数组

继承人html的样子

<DT><A HREF="https://www.youtube.com/watch?v=Ue8PpA557Bc" ADD_DATE="1477165404" LAST_MODIFIED="1477165404" ICON_URI="https://s.ytimg.com/yts/img/favicon_144-vflWmzoXw.png" ICON="data:image/png;base64,">Don Diablo - Knight Time (Official Music Video) - YouTube</A>

我该怎么做?

2 个答案:

答案 0 :(得分:2)

如果你输入$html一个正确的html字符串,你可以用DOMDocument解析字符串并用XPath选择href属性。

<?php

$html = '<DT><A HREF="https://www.youtube.com/watch?v=Ue8PpA557Bc" ADD_DATE="1477165404" LAST_MODIFIED="1477165404" ICON_URI="https://s.ytimg.com/yts/img/favicon_144-vflWmzoXw.png" ICON="data:image/png;base64,">Don Diablo - Knight Time (Official Music Video) - YouTube</A>';

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

$xpath = new DomXPath($doc);

$nodeList = $xpath->query("//a/@href");

$links_array = [];

foreach($nodeList as $node){
  $links_array[] = $node->nodeValue;
}

echo "<pre>";
print_r($links_array);
echo "</pre>";

这里的输出是:

Array
(
    [0] => https://www.youtube.com/watch?v=Ue8PpA557Bc
)

答案 1 :(得分:2)

$doc = new DOMDocument();
$doc->loadHTML($bookmarks);
foreach ($doc->getElementsByTagName("a") as $node) { 
    $urls[] = $node->getAttribute("href");
}