欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php expact

傅智翔1年前8瀏覽0評論
PHP Expact是PHP的一個擴展,用于處理XML文檔。相比于原生代碼處理XML文檔時繁瑣的方法,Expact可以更加簡單地處理XML文檔。今天我們來探討一下PHP Expact的使用方法和注意事項。 首先,我們需要在PHP中開啟Expact擴展。開啟方法很簡單,只需要在php.ini文件中添加一行代碼:extension=php_expact.so。當(dāng)然,如果你使用的是Windows系統(tǒng),則對應(yīng)的是extension=php_expact.dll。 一般來說,Expact最常用于XML文檔的解析。我們可以通過解析XML文檔來獲取其中的內(nèi)容,并進行相應(yīng)的操作。下面是一個基本的XML文檔:
Tom20Jerry18
我們可以通過Expact來解析這個XML文檔,獲取其中的信息:
$xml = expact_xml_parser_create();
expact_xml_parser_set_option($xml, EXPACT_XML_OPTION_CASE_FOLDING, false);
expact_xml_parser_set_option($xml, EXPACT_XML_OPTION_SKIP_WHITE, true);
expact_xml_parse($xml, $xml_content); // $xml_content為XML文檔的字符串形式
$persons = [];
function startElement($parser, $name, $attrs) {
global $persons;
if ($name == 'person') {
$person = [
'id' =>$attrs['id'],
'name' =>'',
'age' =>''
];
array_push($persons, $person);
}
}
function endElement($parser, $name) {}
function characterData($parser, $data) {
global $persons;
$count = count($persons);
if ($count >0) {
$index = $count - 1;
$lastPerson = $persons[$index];
switch($parser->$parser) {
case 'name':
$lastPerson['name'] = $data;
break;
case 'age':
$lastPerson['age'] = $data;
break;
}
$persons[$index] = $lastPerson;
}
}
expact_xml_set_element_handler($xml, "startElement", "endElement");
expact_xml_set_character_data_handler($xml, "characterData");
expact_xml_parser_free($xml);
通過以上代碼,我們就可以將XML文檔中的person節(jié)點解析出來,并存儲到$persons數(shù)組中。其中,startElement函數(shù)被調(diào)用時表示當(dāng)前解析到XML文檔中的某個節(jié)點開始位置;endElement函數(shù)被調(diào)用時表示當(dāng)前解析到XML文檔中的某個節(jié)點結(jié)束位置;characterData函數(shù)被調(diào)用時表示獲取當(dāng)前節(jié)點中的文本內(nèi)容。我們可以根據(jù)需要在這些函數(shù)中編寫相應(yīng)的業(yè)務(wù)邏輯。 需要注意的是,Expact的回調(diào)函數(shù)必須是全局函數(shù)。如果你需要在類中使用回調(diào)函數(shù),可以使用call_user_func和call_user_func_array函數(shù)。 除了XML文檔解析之外,Expact還可以進行XML文檔的生成。我們可以通過Expact提供的函數(shù),將PHP數(shù)組轉(zhuǎn)換為XML文檔。
$root = [
'person' =>[
[
'@attributes' =>[
'id' =>'1'
],
'name' =>'Tom',
'age' =>'20'
],
[
'@attributes' =>[
'id' =>'2'
],
'name' =>'Jerry',
'age' =>'18'
]
]
];
$xml_writer = expact_xmlwriter_open_uri('php://output');
expact_xmlwriter_start_document($xml_writer, '1.0', 'UTF-8');
expact_xmlwriter_start_element($xml_writer, 'root');
function writeArray($node, $writer) {
foreach ($node as $key =>$val) {
if ($key == '@attributes') {
foreach ($val as $attr_key =>$attr_val) {
expact_xmlwriter_start_attribute($writer, $attr_key);
expact_xmlwriter_text($writer, $attr_val);
expact_xmlwriter_end_attribute($writer);
}
} else {
expact_xmlwriter_start_element($writer, $key);
if (is_array($val)) {
writeArray($val, $writer);
} else {
expact_xmlwriter_text($writer, $val);
}
expact_xmlwriter_end_element($writer);
}
}
}
writeArray($root, $xml_writer);
expact_xmlwriter_end_element($xml_writer);
expact_xmlwriter_end_document($xml_writer);
expact_xmlwriter_flush($xml_writer);
通過以上代碼,我們生成了一個與之前XML文檔相同結(jié)構(gòu)的XML文檔,并將其輸出到標準輸出中。其中,expact_xmlwriter_open_uri函數(shù)用于打開一個Uri,可以是文件名、流名或者php://output。expact_xmlwriter_start_document函數(shù)用于開啟XML文檔,expact_xmlwriter_start_element函數(shù)用于開始一個XML元素,expact_xmlwriter_start_attribute函數(shù)用于開啟一個XML元素的屬性,expact_xmlwriter_text函數(shù)用于向元素中添加文本,expact_xmlwriter_end_document函數(shù)用于結(jié)束XML文檔。 總之,通過PHP Expact,我們可以更加方便地處理XML文檔,提高我們的開發(fā)效率。當(dāng)然,在使用Expact時需要注意回調(diào)函數(shù)必須為全局函數(shù),否則會出現(xiàn)異常。
上一篇php exit