【问题标题】:Dom replace entire nodedom替换整个节点
【发布时间】:2013-03-04 10:44:21
【问题描述】:

现在,我有这个:

$text = $row->text;
$dom = new DOMDocument();
$dom->loadHTML($text);
$tags = $dom->getElementsByTagName('img');

foreach ($tags as $tag) {
    $eg = $tag->getAttribute('data-easygal');
    $src = $tag->getAttribute('src');
    $values = explode("_",$eg);
    $display = $this->prepareAlbum($values[0],$values[1],$src);
}
$row->text = $text;

有没有办法将整个节点 $tag 替换为 $display 字符串中的内容?例如,我似乎无法找出如何 str_replace 节点。 曾经有 preg_replace,但它在客户端服务器上无法正常工作,即使它在家里工作(以及一些来自 php 社区对 preg 和 html 的即时愤怒)

试图搜索董事会,但没有找到我需要的东西:S

【问题讨论】:

    标签: php dom


    【解决方案1】:

    类似:

    foreach($tags as &$tag) {
        ...
        $tag = new DomNode();
    }
    

    【讨论】:

      【解决方案2】:

      试试

      $tag-> parentNode ->replaceChild($newNode, $tag);
      

      应将$tag 节点替换为$newNode - 您以通常方式创建的DOM 节点。

      【讨论】:

      • 问题是,我需要在其位置放置一个字符串,而不是一个新的 dom。
      • 使用createTextNode(text)
      猜你喜欢
      • 2016-09-17
      • 2012-10-04
      • 2010-12-02
      • 2015-11-11
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 2015-08-18
      • 2010-11-17
      相关资源
      最近更新 更多