【问题标题】:Output HTML using PHP DOM [duplicate]使用 PHP DOM 输出 HTML [重复]
【发布时间】:2013-05-21 09:59:06
【问题描述】:

我正在尝试使用 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”。我已经用 Google 搜索了几个小时并尝试了很多东西,但我不知道如何将 HTML 输出为 HTML。

【问题讨论】:

  • 试试$doc-&gt;loadHTML(file_get_contents("http://www.nu.nl"));
  • $tags 是节点的集合,不是可以保存的文档。见stackoverflow.com/a/4530728/258674
  • 我没有尝试输出完整的文档,只是将锚定为 html &lt;a href=""&gt;anchor&lt;/a&gt;
  • 谢谢你我试过了,它似乎工作:) 但是它有点“感觉”像一个解决方法..你确定现在有其他“更直接”的方法吗?跨度>
  • 如果您使用的是 php 5.3.6 或更高版本,在同一个问题中有更快的方法 - stackoverflow.com/a/16717450/258674

标签: php domdocument


【解决方案1】:

你可能想要这样的事情:

$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);

【讨论】:

    【解决方案2】:

    在foreach中

    echo $doc->saveHTML($link);
    

    【讨论】:

      【解决方案3】:

      这里有一个修复程序,它将为相对链接添加根 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/>';
          }
      }
      

      【讨论】:

      • 难以置信,这是我要做的第二件事,非常感谢:)
      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 2011-02-17
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多