为了账号安全,请及时绑定邮箱和手机立即绑定

如何返回DOMDocument的外部html?

/ 猿问

如何返回DOMDocument的外部html?

慕莱坞7535251 2019-09-13 15:10:20

如何返回DOMDocument的外部html?

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

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

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

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


查看完整描述

3 回答

?
慕瓜9086354

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

$domDocument->saveHtml($nodeToGetTheOuterHtmlFrom);

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

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


查看完整回答
反对 回复 2019-09-16
?
呼啦一阵风

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

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

<?php// code taken from the Raxan PDI framework// returns the html content of an elementprotected 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;}?>




查看完整回答
反对 回复 2019-09-16
?
烙印99

最好的解决方案是定义你自己的函数,它将返回你的outerhtml:

function outerHTML($e) {
     $doc = new DOMDocument();
     $doc->appendChild($doc->importNode($e, true));
     return $doc->saveHTML();}

比你可以在你的代码中使用

echo outerHTML($link);



查看完整回答
反对 回复 2019-09-16

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信