PHP Conference Japan 2024

DOMDocument::__construct

(PHP 5,PHP 7,PHP 8)

DOMDocument::__construct 建立新的 DOMDocument 物件

描述

public DOMDocument::__construct(string $version = "1.0", string $encoding = "")

建立新的 DOMDocument 物件。

參數

version

文件的版本號碼,作為 XML 宣告的一部分。

encoding

文件的編碼,作為 XML 宣告的一部分。

範例

範例 1 建立新的 DOMDocument

<?php

$dom
= new DOMDocument('1.0', 'iso-8859-1');

echo
$dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?> */

?>

另請參閱

新增筆記

使用者貢獻的筆記 8 則筆記

21
_ michael
14 年前
如果您想要使用 createElement、appendChild 等來建立新文件,則建構子的引數很有用。

相反地,一旦您透過呼叫 load() 或 loadXML() 從來源載入文件,這些引數就會被覆寫。

* 如果來源包含指定編碼的 XML 宣告,則會使用該編碼。
* 如果 XML 宣告未指定編碼,或如果來源根本不包含宣告,則會假設為 UTF-8。

無論您在呼叫 new DOMDocument() 時宣告了什麼,此行為都適用。
8
jarl kringelding skim punt com
17 年前
請注意在建構子中使用編碼參數。
這並不表示所有資料都會自動以您提供的編碼進行編碼。一旦您選擇了 UTF-8 預設值以外的編碼,您需要自己執行此操作。請參閱關於 DOM 函式的筆記,了解如何正確處理其他編碼...

建構子範例清楚地顯示版本和編碼只會出現在 XML 標頭中。
3
dave at revlob dot com
16 年前
@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"?>
4
bholbrook at servillian dot com
17 年前
請確保在使用 domdocument 類別之前,移除 Windows 上的 php_domxml.dll,因為它們無法共存。
1
blackhailang at gmail dot com
16 年前
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 行中加上註解。
php.ini 檔案。
您只需要將其註解掉,但不要刪除
ext 目錄中的 php_domxml.dll 檔案。
1
christian dot reinecke at web dot de
16 年前
如果您針對像這樣的程式碼範例收到錯誤訊息「domdocument::domdocument() 預期參數 2 為長整數,但給定字串」

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->xmlStandalone = false;
echo $dom->saveXML();

如果您比較建構子簽名,這顯然是正確的

__construct ([ string $version [, string $encoding ]] )

請確保您沒有被另一個 dom 程式庫覆寫這個 dom 程式庫 (例如 php.ini 中的 extension=php_domxml.dll)。例如,XAMPP 提供其標準版本以及 php_domxml.dll,這會導致此錯誤訊息
0
steve at mrclay dot org
16 年前
為了擴展 bholbrook 的評論,如果您收到此訊息:「警告:domdocument::domdocument() 至少需要 1 個參數」,這是由於舊的 domxml 擴充功能,您需要停用它。

domxml 使用 domxml_open_mem 的別名覆寫 DOMDocument::_construct,因此這段程式碼
<?php
$doc
= new DOMDocument();
?>
...基本上會執行此操作
<?php
$dom
= domxml_open_mem();
?>
...這就是為什麼 PHP 會抱怨至少需要 1 個參數(它預期為 XML 字串)。
-5
qrworld.net
10 年前
在這篇文章 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();
}
To Top