如果你想通过 createElement、appendChild 等来构建一个新文档,那么构造函数参数很有用。
相反,当你通过调用 load() 或 loadXML() 从源代码加载文档时,这些参数会被覆盖。
* 如果源代码包含指定编码的 XML 声明,则采用该编码。
* 如果 XML 声明未指定编码,或者源代码根本没有声明,则假定为 UTF-8。
这种行为适用于在调用 new DOMDocument() 时所声明的内容。
(PHP 5、PHP 7、PHP 8)
DOMDocument::__construct — 创建一个新的 DOMDocument 对象
创建一个新的 DOMDocument 对象。
版本
XML 声明中,文档的版本号。
编码
XML 声明中,文档的编码。
示例 #1 创建一个新的 DOMDocument
<?php
$dom = new DOMDocument('1.0', 'iso-8859-1');
echo $dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?> */
?>
如果你想通过 createElement、appendChild 等来构建一个新文档,那么构造函数参数很有用。
相反,当你通过调用 load() 或 loadXML() 从源代码加载文档时,这些参数会被覆盖。
* 如果源代码包含指定编码的 XML 声明,则采用该编码。
* 如果 XML 声明未指定编码,或者源代码根本没有声明,则假定为 UTF-8。
这种行为适用于在调用 new DOMDocument() 时所声明的内容。
请注意构造函数中编码参数的使用。
这不意味着按照供应编码自动编码所有的数据。如果您选择不使用默认 UTF-8 编码,您需要在选择另外的编码后,自己执行此操作。请参阅 DOM 函数说明了解如何使用其他编码...
构造器示例明确地表明版本和编码只出现在 XML 头中。
@Jarl
不确定当您说“构造器示例明确地表明版本和编码只出现在 XML 头中”时您是否表达了这样的意思,但您也可以通过访问 DOMDocument 的属性来影响生成 XML 头中的其他参数,例如
<?php
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->xmlStandalone = false;
echo $dom->saveXML();
// <?xml version="1.0" encoding="UTF-8" standalone="no"?>
domdocument::domdocument() 至少需要
至少,我发现是由 ZEND 优化器导致,卸载它,运行良好,但速度会慢 :-(。
评论
第 1 项:2008-10-03 17:10:58,gkrong 说
"警告:domdocument::domdocument() 至少需要 1
个参数"
如果您使用 Windows 中的 PHP 5,您不需要在您的 php.ini 文件中声明
php_domxml.dll。
因此您可以在您的
php.ini 文件中对 php_domxml.dll 进行注释。
您只需要对它添加注释,但不要删除
ext 目录中的 php_domxml.dll 文件。
如果您对这样的代码示例收到错误消息“domdocument::domdocument() 预期参数 2 为 long,但给定为 string”
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->xmlStandalone = false;
echo $dom->saveXML();
如果您和构造器签名进行比较,很明显是正确的
__construct ([ string $version [, string $encoding ]] )
确保您没有使用其他库覆盖这个 dom 库(例如在 php.ini 中 extension=php_domxml.dll)。例如,XAMPP 会随其标准版本提供 php_domxml.dll,最终导致此错误消息
根据 bholbrook 评论的扩展内容,如果您收到此信息:“警告:domdocument::domdocument() 至少需要一个参数”,则可能是因为您需要禁用的旧 domxml 扩展。
domxml 使用 domxml_open_mem 的别名来覆盖 DOMDocument::_construct,因此以下代码
<?php
$doc = new DOMDocument();
?>
...实际上执行以下操作
<?php
$dom = domxml_open_mem();
?>
...这也就是为什么 PHP 响应至少需要 1 个参数(它需要一个 XML 字符串)。
我在此帖 http://softontherocks.blogspot.com/2014/11/descargar-el-contenido-de-una-url_11.html 中找到了一种用 DOMDocument、loadHTMLFile 和 saveHTML() 获取 URL 内容的简单方法。
function getURLContent($url){
$doc = new DOMDocument;
$doc->preserveWhiteSpace = FALSE;
@$doc->loadHTMLFile($url);
return $doc->saveHTML();
}