PHP Conference Japan 2024

xml_parser_set_option

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_parser_set_option在 XML 解析器中設定選項

描述

xml_parser_set_option(XMLParser $parser, int $option, string|int|bool $value): bool

在 XML 解析器中設定一個選項。

參數

parser

要設定選項的 XML 解析器的參考。

option

要設定哪個選項。請參閱下方。

下列選項可用

XML 解析器選項
選項常數 資料類型 描述
XML_OPTION_CASE_FOLDING bool 控制是否為此 XML 解析器啟用大小寫摺疊。預設為啟用。
XML_OPTION_PARSE_HUGE bool 允許解析大於 10 MB 的文件。僅當文件大小有界限時才應啟用此選項,否則可能會導致 DoS。此選項僅在使用 libxml2 時可用。
XML_OPTION_SKIP_TAGSTART integer 指定在標籤名稱開頭應跳過多少個字元。
XML_OPTION_SKIP_WHITE bool 是否跳過由空格字元組成的值。
XML_OPTION_TARGET_ENCODING string 設定在此 XML 解析器中使用的目標編碼。預設情況下,它設定為與 xml_parser_create() 使用的來源編碼相同。支援的目標編碼為 ISO-8859-1US-ASCIIUTF-8

value

選項的新值。

傳回值

成功時傳回 true,失敗時傳回 false

錯誤/例外

當傳遞無效值給 option 時,擲回 ValueError

在 PHP 8.0.0 之前,當傳遞無效值給 option 時,該函式會傳回 false,並產生 E_WARNING 以及讓函式傳回 false

變更記錄

版本 描述
8.4.0 新增選項 XML_OPTION_PARSE_HUGE
8.3.0 value 參數現在也接受布林值。選項 XML_OPTION_CASE_FOLDINGXML_OPTION_SKIP_WHITE 現在是布林選項。
8.0.0 parser 現在期望 XMLParser 實例;先前,期望一個有效的 xml resource
8.0.0 如果 option 無效,現在會擲回 ValueError
新增筆記

使用者貢獻筆記 3 筆筆記

2
www.thomaskoch.it
16 年前
選項 XML_OPTION_SKIP_WHITE 在我的 PHP 5.2.6 (使用 expat-1.95.8-5) 中沒有效果。要跳過僅由空格組成的 cdata,只需在您的 cdata 回呼函式開頭檢查即可

<?php
function callback_cdata($parser, $cdata)
{
if(!
trim($cdata))
return;

// ... 繼續處理 ...
}
?>
1
pupeno at pupeno dot com
22 年前
XML 是區分大小寫的,因此,從我的觀點來看,停用大小寫摺疊並不會違反 xml 1.0 規範,而是相反,停用大小寫摺疊允許我們區分同一個字母的不同大小寫('a' 和 'A'),這在 XML 中是兩個不同的東西。
從我的觀點來看,停用大小寫摺疊是一個很好的做法,我認為應該預設為停用。
更多資訊請參閱
http://www.isacat.net/2001/xml/case.htm

http://www.w3.org/TR/REC-xml
謝謝。
0
j[no_spam_please] at [thx]jessepearson dot net
17 年前
在下面的函式中,如果您不希望 php 擲回警告,您需要更新兩行。

變更這兩行
$elements[$index]['attributes'] = $tag['attributes'];
$elements[$index]['content'] = $tag['value'];

改為這樣
$elements[$index]['attributes'] = empty($tag['attributes']) ? "" : $tag['attributes'];
$elements[$index]['content'] = empty($tag['value']) ? "" : $tag['value'];
To Top