【问题标题】:DOMDocument::replaceChild() responds results in 500 (Internal Server error)DOMDocument::replaceChild() 响应结果为 500(内部服务器错误)
【发布时间】:2012-11-09 16:05:24
【问题描述】:

我有问题。 PHP 文件响应 500 错误。无法理解是什么问题。 PHP 错误信息是:

致命错误:未捕获的异常“DOMException”和消息“未找到错误”

代码如下:

$dom = new domDocument;
$dom->preserveWhiteSpace = false;
$dom->loadHTML($cont);

$links  = $dom->getElementsByTagName('a');
$images = $dom->getElementsByTagName('img');
$divs   = $dom->getElementsByTagName('div');

foreach ($links as $link)
{
    $link->setAttribute('target','_blank');
}

foreach ($images as $image)
{
    $image->setAttribute('style','max-width:405px');
}

foreach ($divs as $div)
{
    $pnode = $dom->createElement('p', $div->nodeValue);
    $dom->replaceChild($pnode, $div); //the problem string
}

更新:如果问题字符串被注释,则没有错误。

【问题讨论】:

  • 始终在打开display_errors 的情况下进行开发。 500 是 PHP 中的致命错误,消息会很清楚。 ini_set('display_errors', 1); error_reporting(E_ALL);
  • 可能的问题:1)错误的htaccess文件,2)试图访问代码中不存在的方法3)错误可能与您列出的代码无关。请发布完整示例,以便人们对其进行测试
  • 好的,现在它写道:致命错误:未捕获的异常 'DOMException' 带有消息 'Not Found Error'
  • 试试$div->parentNode->replaceChild
  • 您在使用$div->parentNode->replaceChild($pnode, $div); 后仍然遇到同样的错误?

标签: domdocument php


【解决方案1】:

代码似乎没问题。检查您是否在phpinfo(); 中启用了 DOM/XML php 扩展。添加

ini_set('display_errors', 1);
error_reporting(E_ALL);

发送至您的代码或enable php error showing in .htaccess

【讨论】:

    【解决方案2】:

    感谢air4x

    replaceChildren 只查找一层。在我的情况下,它正在寻找和根中的元素。

    解决方法如下:

     $div->parentNode->replaceChild($pnode, $div);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2015-08-01
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多