選項 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;
// ... 繼續處理 ...
}
?>
(PHP 4, PHP 5, PHP 7, PHP 8)
xml_parser_set_option — 在 XML 解析器中設定選項
在 XML 解析器中設定一個選項。
parser
要設定選項的 XML 解析器的參考。
option
要設定哪個選項。請參閱下方。
下列選項可用
選項常數 | 資料類型 | 描述 |
---|---|---|
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-1 、US-ASCII 和 UTF-8 。 |
value
選項的新值。
當傳遞無效值給 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_FOLDING 和 XML_OPTION_SKIP_WHITE 現在是布林選項。 |
8.0.0 |
parser 現在期望 XMLParser 實例;先前,期望一個有效的 xml resource。 |
8.0.0 | 如果 option 無效,現在會擲回 ValueError。 |
選項 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;
// ... 繼續處理 ...
}
?>
XML 是區分大小寫的,因此,從我的觀點來看,停用大小寫摺疊並不會違反 xml 1.0 規範,而是相反,停用大小寫摺疊允許我們區分同一個字母的不同大小寫('a' 和 'A'),這在 XML 中是兩個不同的東西。
從我的觀點來看,停用大小寫摺疊是一個很好的做法,我認為應該預設為停用。
更多資訊請參閱
http://www.isacat.net/2001/xml/case.htm
和
http://www.w3.org/TR/REC-xml
謝謝。
在下面的函式中,如果您不希望 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'];