如何返回 DOMDocument 的外部 html?

2022-08-31 00:34:28

我正在尝试替换字符串中的视频链接 - 这是我的代码:

$doc = new DOMDocument();
$doc->loadHTML($content);
foreach ($doc->getElementsByTagName("a") as $link) 
{
    $url = $link->getAttribute("href");
    if(strpos($url, ".flv"))
    {
        echo $link->outerHTML();
    }
}

不幸的是,当我尝试获取完整超链接的html代码时,不起作用,例如outerHTML<a href='http://www.myurl.com/video.flv'></a>

任何想法如何实现这一目标?


答案 1

从 PHP 5.3.6 开始,您可以将节点传递给 ,例如saveHtml

$domDocument->saveHtml($nodeToGetTheOuterHtmlFrom);

以前版本的PHP没有实现这种可能性。您必须使用 ,但这会创建符合 XML 的标记。对于元素,这应该不是问题。saveXml()<a>

查看 http://blog.gordon-oheim.biz/2011-03-17-The-DOM-Goodie-in-PHP-5.3.6/


答案 2

您可以在PHP手册DOM部分的用户注释中找到一些命题。

例如,这是xwisdom发布的一个:

<?php
// code taken from the Raxan PDI framework
// returns the html content of an element
protected function nodeContent($n, $outer=false) {
    $d = new DOMDocument('1.0');
    $b = $d->importNode($n->cloneNode(true),true);
    $d->appendChild($b); $h = $d->saveHTML();
    // remove outter tags
    if (!$outer) $h = substr($h,strpos($h,'>')+1,-(strlen($n->nodeName)+4));
    return $h;
}
?> 

推荐