日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

PHP擴(kuò)展之XML操作(三)——XML解析器使用及相關(guān)函數(shù)

瀏覽:18日期:2022-09-16 10:08:38
一、XML 元素結(jié)構(gòu)例程

第一個(gè)例程縮進(jìn)顯示文檔中的開始元素結(jié)構(gòu)。

Example #1 顯示 XML 元素結(jié)構(gòu)

<?php$file?=?'data.xml';$depth?=?array();

function?startElement($parser,?$name,?$attrs){global?$depth;for?($i?=?0;?$i?<?$depth[$parser];?$i++)?{echo?'??';}echo?'$namen';$depth[$parser]++;}

function?endElement($parser,?$name){global?$depth;$depth[$parser]--;}

$xml_parser?=?xml_parser_create();xml_set_element_handler($xml_parser,?'startElement',?'endElement');if?(!($fp?=?fopen($file,?'r')))?{die('could?not?open?XML?input');}

while?($data?=?fread($fp,?4096))?{if?(!xml_parse($xml_parser,?$data,?feof($fp)))?{die(sprintf('XML?error:?%s?at?line?%d',xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));}}xml_parser_free($xml_parser);?>二、XML 標(biāo)簽映射例程

Example #1 將 XML 映射為 HTML

此例程直接地將 XML 標(biāo)簽映射為 HTML 標(biāo)簽。 在“map_array”中未找到的元素將被忽略。 當(dāng)然,此例程只針對特定的 XML 文檔類型起作用。

<?php$file?=?'data.xml';$map_array?=?array('BOLD'?????=>?'B','EMPHASIS'?=>?'I','LITERAL'??=>?'TT');

function?startElement($parser,?$name,?$attrs){global?$map_array;if?(isset($map_array[$name]))?{echo?'<$map_array[$name]>';}}

function?endElement($parser,?$name){global?$map_array;if?(isset($map_array[$name]))?{echo?'</$map_array[$name]>';}}

function?characterData($parser,?$data){echo?$data;}

$xml_parser?=?xml_parser_create();//?use?case-folding?so?we?are?sure?to?find?the?tag?in?$map_arrayxml_parser_set_option($xml_parser,?XML_OPTION_CASE_FOLDING,?true);xml_set_element_handler($xml_parser,?'startElement',?'endElement');xml_set_character_data_handler($xml_parser,?'characterData');if?(!($fp?=?fopen($file,?'r')))?{die('could?not?open?XML?input');}

while?($data?=?fread($fp,?4096))?{if?(!xml_parse($xml_parser,?$data,?feof($fp)))?{die(sprintf('XML?error:?%s?at?line?%d',xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));}}xml_parser_free($xml_parser);?>三、XML 外部實(shí)體例程

此例程用于加亮 XML 代碼。舉例說明如何使用外部實(shí)體引用來包含和解析其他文檔, 及處理指令是如何被處理的,及判斷處理指令所包含代碼是否“可信任”的一種方法

用于此例程的 XML 文檔位于此例程的下方(xmltest.xml?和?xmltest2.xml)。

Example #1 外部實(shí)體例程

<?php$file?=?'xmltest.xml';

function?trustedFile($file){//?僅信任本地文件if?(!preg_match('@^([a-z]+)://@i',?$file)&&?fileowner($file)?==?getmyuid())?{return?true;}return?false;}

function?startElement($parser,?$name,?$attribs){echo?'&lt;<font?color='#0000cc'>$name</font>';if?(count($attribs))?{foreach?($attribs?as?$k?=>?$v)?{echo?'?<font?color='#009900'>$k</font>='<fontcolor='#990000'>$v</font>'';}}echo?'&gt;';}

function?endElement($parser,?$name){echo?'&lt;/<font?color='#0000cc'>$name</font>&gt;';}

function?characterData($parser,?$data){echo?'<b>$data</b>';}

function?PIHandler($parser,?$target,?$data){switch?(strtolower($target))?{case?'php':global?$parser_file;//?如何要解析的文檔是“可信任”的,?則說明可安全//?地執(zhí)行其內(nèi)部的?PHP?代碼。否則,顯示代碼內(nèi)容。if?(trustedFile($parser_file[$parser]))?{eval($data);}?else?{printf('Untrusted?PHP?code:?<i>%s</i>',htmlspecialchars($data));}break;}}

function?defaultHandler($parser,?$data){if?(substr($data,?0,?1)?==?'&'?&&?substr($data,?-1,?1)?==?';')?{printf(’<font?color='#aa00aa'>%s</font>’,htmlspecialchars($data));}?else?{printf(’<font?size='-1'>%s</font>’,htmlspecialchars($data));}}

function?externalEntityRefHandler($parser,?$openEntityNames,?$base,?$systemId,$publicId)?{if?($systemId)?{if?(!list($parser,?$fp)?=?new_xml_parser($systemId))?{printf('Could?not?open?entity?%s?at?%sn',?$openEntityNames,$systemId);return?false;}while?($data?=?fread($fp,?4096))?{if?(!xml_parse($parser,?$data,?feof($fp)))?{printf('XML?error:?%s?at?line?%d?while?parsing?entity?%sn',xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser),?$openEntityNames);xml_parser_free($parser);return?false;}}xml_parser_free($parser);return?true;}return?false;}

function?new_xml_parser($file){global?$parser_file;

$xml_parser?=?xml_parser_create();xml_parser_set_option($xml_parser,?XML_OPTION_CASE_FOLDING,?1);xml_set_element_handler($xml_parser,?'startElement',?'endElement');xml_set_character_data_handler($xml_parser,?'characterData');xml_set_processing_instruction_handler($xml_parser,?'PIHandler');xml_set_default_handler($xml_parser,?'defaultHandler');xml_set_external_entity_ref_handler($xml_parser,?'externalEntityRefHandler');

if?(!($fp?=?@fopen($file,?'r')))?{return?false;}if?(!is_array($parser_file))?{settype($parser_file,?'array');}$parser_file[$xml_parser]?=?$file;return?array($xml_parser,?$fp);}

if?(!(list($xml_parser,?$fp)?=?new_xml_parser($file)))?{die('could?not?open?XML?input');}

echo?'<pre>';while?($data?=?fread($fp,?4096))?{if?(!xml_parse($xml_parser,?$data,?feof($fp)))?{die(sprintf('XML?error:?%s?at?line?%dn',xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));}}echo?'</pre>';echo?'parse?completen';xml_parser_free($xml_parser);

?>

Example #2 xmltest.xml

<?xml version=’1.0’?><!DOCTYPE chapter SYSTEM '/just/a/test.dtd' [<!ENTITY plainEntity 'FOO entity'><!ENTITY systemEntity SYSTEM 'xmltest2.xml'>]><chapter> <TITLE>Title &plainEntity;</TITLE> <para> <informaltable> <tgroup cols='3'> <tbody> <row><entry>a1</entry><entry morerows='1'>b1</entry><entry>c1</entry></row> <row><entry>a2</entry><entry>c2</entry></row> <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row> </tbody> </tgroup> </informaltable> </para> &systemEntity; <section id='about'> <title>About this Document</title> <para> <!-- this is a comment --> <?php echo ’Hi! This is PHP version ’ . phpversion(); ?> </para> </section></chapter>

此文件包含在?xmltest.xml?中:

Example #3 xmltest2.xml

<?xml version='1.0'?><!DOCTYPE foo [<!ENTITY testEnt 'test entity'>]><foo> <element attrib='value'/> &testEnt; <?php echo 'This is some more PHP code being executed.'; ?></foo>四、XML解析器函數(shù)utf8_decode?— 將用 UTF-8 方式編碼的 ISO-8859-1 字符串轉(zhuǎn)換成單字節(jié)的 ISO-8859-1 字符串。utf8_encode?— 將 ISO-8859-1 編碼的字符串轉(zhuǎn)換為 UTF-8 編碼xml_error_string?— 獲取 XML 解析器的錯(cuò)誤字符串xml_get_current_byte_index?— 獲取 XML 解析器的當(dāng)前字節(jié)索引xml_get_current_column_number?— 獲取 XML 解析器的當(dāng)前列號xml_get_current_line_number?— 獲取 XML 解析器的當(dāng)前行號xml_get_error_code?— 獲取 XML 解析器錯(cuò)誤代碼xml_parse_into_struct?— 將 XML 數(shù)據(jù)解析到數(shù)組中xml_parse?— 開始解析一個(gè) XML 文檔xml_parser_create_ns?— 生成一個(gè)支持命名空間的 XML 解析器xml_parser_create?— 建立一個(gè) XML 解析器xml_parser_free?— 釋放指定的 XML 解析器xml_parser_get_option?— 從 XML 解析器獲取選項(xiàng)設(shè)置信息xml_parser_set_option?— 為指定 XML 解析進(jìn)行選項(xiàng)設(shè)置xml_set_character_data_handler?— 建立字符數(shù)據(jù)處理器xml_set_default_handler?— 建立默認(rèn)處理器xml_set_element_handler?— 建立起始和終止元素處理器xml_set_end_namespace_decl_handler?— 建立終止命名空間聲明處理器xml_set_external_entity_ref_handler?— 建立外部實(shí)體指向處理器xml_set_notation_decl_handler?— 建立注釋聲明處理器xml_set_object?— 在對象中使用 XML 解析器xml_set_processing_instruction_handler?— 建立處理指令(PI)處理器xml_set_start_namespace_decl_handler?— 建立起始命名空間聲明處理器xml_set_unparsed_entity_decl_handler?— 建立未解析實(shí)體定義聲明處理器

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久夜色精品| 国产精品巨作av| 国产麻豆一区二区三区 | 国产精品一站二站| 日本不卡视频在线观看| 欧美精品一二| 国产亚洲午夜| 综合精品一区| 日韩av在线免费观看不卡| 天海翼亚洲一区二区三区| 久久都是精品| 日韩在线电影| 欧美精品不卡| 日韩国产专区| 国产午夜久久| 日韩欧美四区| 欧美日韩亚洲一区二区三区在线| 日韩黄色av| 久久黄色影视| av最新在线| 亚洲精品中文字幕乱码| 波多野结衣一区| 视频一区视频二区在线观看| 悠悠资源网久久精品| 在线精品亚洲欧美日韩国产| 国产一区福利| 久久久久.com| 亚洲va久久| 精品视频在线观看网站| 美女av在线免费看| 91精品电影| 日韩精品一区二区三区中文在线 | 国产一区二区三区四区大秀| 国产免费av国片精品草莓男男| 国产欧美日韩一区二区三区四区| 欧美在线观看天堂一区二区三区| 国产精品99精品一区二区三区∴| 精品国产aⅴ| 激情欧美一区| 美女精品在线观看| 日韩高清不卡在线| 精品美女在线视频| 尤物精品在线| 免费一级欧美在线观看视频| 久久精品二区亚洲w码| 国产日韩电影| 日韩精品一区第一页| 日本午夜精品视频在线观看| 日本视频一区二区| 亚洲国产成人二区| 午夜在线播放视频欧美| 日韩av一级片| 国产福利片在线观看| 免费视频国产一区| 亚洲欧美日本国产| 日韩成人精品一区二区| 亚洲一级网站| 国产精品99久久免费| 久久久久欧美精品| 日韩1区2区日韩1区2区| 都市激情国产精品| 亚洲人亚洲人色久| 在线观看精品| 国产日韩欧美在线播放不卡| 欧美国产日韩电影| 99精品视频在线| 国产精品欧美一区二区三区不卡| 亚洲精品.com| 国产日韩欧美一区二区三区| 精品一区二区三区免费看 | 久久婷婷激情| 国产日韩亚洲欧美精品| 久久婷婷丁香| 男人天堂欧美日韩| 欧美日韩一区自拍| 中文在线免费视频| 国产综合欧美| 蜜桃av一区| 日本免费一区二区三区四区| 亚洲午夜精品久久久久久app| 国产激情综合| 欧美另类中文字幕| 国产精品xxx在线观看| 国产成人精品福利| 久久免费黄色| 国产日韩一区二区三区在线播放| 香蕉久久一区| 国精品产品一区| 日本aⅴ精品一区二区三区| 亚洲精品一级| 精品网站999| 自拍日韩欧美| 福利精品在线| 国产农村妇女精品一二区| 日本麻豆一区二区三区视频| 蜜臀av一区二区在线免费观看| 最新国产精品久久久| 18国产精品| 久久亚洲人体| 欧美一区自拍| 激情欧美一区| 亚洲欧美日韩高清在线| 日韩高清在线一区| 国产精品国产三级国产在线观看| 日韩精品看片| 亚洲有吗中文字幕| 午夜久久久久| 日韩久久一区二区三区| 国产亚洲久久| 亚洲综合福利| 日韩影院在线观看| 亚洲在线免费| 精品在线播放| 爽好久久久欧美精品| 色爱综合网欧美| 久久国内精品自在自线400部| 欧美午夜精彩| 国产精品久久久久9999高清| 久久精品国产www456c0m| 亚洲成人精选| 99精品综合| 欧美激情久久久久久久久久久| 亚洲无线观看| 日韩精品一级二级| 在线一区二区三区视频| 99在线|亚洲一区二区| 久久国产直播| 久久在线免费| 亚洲风情在线资源| 香蕉成人av| 久久精品国产www456c0m| 麻豆精品蜜桃| 视频一区中文| 免费人成黄页网站在线一区二区| 欧美女激情福利| 日韩一级网站| 在线精品一区二区| 日韩精品第二页| 国产探花一区| 欧美激情99| 日韩一区亚洲二区| 欧美粗暴jizz性欧美20| 久久三级福利| 久久精选视频| 午夜在线一区二区| 日本aⅴ精品一区二区三区| 日韩高清一区二区| 国产精品久久国产愉拍| 国产伦精品一区二区三区视频| 欧美一级二级三级视频| 国产欧美日韩一级| 激情国产在线| 香蕉久久夜色精品国产| 综合激情视频| 国产精品传媒麻豆hd| 成人台湾亚洲精品一区二区| 国产欧美日韩视频在线| 你懂的国产精品永久在线| 国产精品密蕾丝视频下载| 国产麻豆一区二区三区精品视频| 久久尤物视频| 日韩在线中文| 丝袜亚洲另类欧美| 国产日韩精品视频一区二区三区| 国产精品igao视频网网址不卡日韩 | 激情欧美丁香| 在线成人直播| 国产欧美日本| 日本免费一区二区三区四区| 久久美女精品| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 成人污污视频| 久久精品不卡| 91p九色成人| 精品欧美一区二区三区在线观看| 国产99精品| 日本国产欧美| 日韩中文影院| 欧美亚洲三区| 激情综合在线| 国产日韩欧美中文在线| 成人午夜亚洲| 免费看的黄色欧美网站 | 国产亚洲一区二区三区不卡| 国产美女视频一区二区| 97精品一区| 日韩精品一区第一页| 国产精品1区在线| 女同性一区二区三区人了人一| 日本成人一区二区| 日本精品不卡| 欧美日本一区| 国产伊人精品| 麻豆久久久久久| 久久高清免费观看| 国产精品成人a在线观看| 石原莉奈在线亚洲三区| 欧美经典一区| 亚洲一级淫片| 久久久精品日韩|