2

我正在尝试使用 PHP DOM 回显 HTML:

$doc = new \DomDocument('1.0', 'UTF-8');
$doc->loadHTMLFile("http://www.nu.nl");

$tags = $doc->getElementsByTagName('a');

echo $doc->saveHTML($tags);

这是给我一个空白页。我也试过:

$doc = new DOMDocument();
$doc->loadHTMLFile("http://www.nu.nl");

$links = $doc->getElementsByTagName('a');
foreach ($links as $link) {
  echo $link->getAttribute('href') . '<br />';

}

这让我得到了纯文本的“href”。我已经用谷歌搜索了几个小时并尝试了很多东西,但我不知道如何将 HTML 输出为 HTML。

4

3 回答 3

2

你可能想要这样的事情:

$doc = new DOMDocument();
$doc->loadHTMLFile("http://www.nu.nl");

$links = $doc->getElementsByTagName('a');
foreach ($links as $link) {
    $thelinks[] = '<a href="' . $link->getAttribute('href') . '">' . trim(preg_replace('/\s{2,}/', '', $link->textContent)) . '</a>';
}

var_dump($thelinks);
于 2013-05-26T09:58:35.130 回答
2

这是一个修复,它将为相对链接添加根 url

$pageurl = "http://www.nu.nl";
$html = file_get_contents($pageurl);
$html = str_replace('&','&amp;',$html);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$links = $doc->getElementsByTagName('a');
foreach ($links as $link) {
    $myLink = $link->getAttribute('href');
    if (substr($myLink,0,7) == 'http://') {
        echo '<a href="'.$myLink.'">'.$myLink.'</a><br/>';
    } else {
        echo '<a href="'.$pageurl.$myLink.'">'.$myLink.'</a><br/>';
    }
}
于 2013-05-26T10:04:23.533 回答
1

在 foreach

echo $doc->saveHTML($link);
于 2013-05-26T10:01:38.217 回答