国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 PHP 和 XML: 使用expat函數(shù)(二)_PHP教程

PHP 和 XML: 使用expat函數(shù)(二)_PHP教程

Jul 21, 2016 pm 04:01 PM
php xml 使用 函數(shù) 實際 我們

?PHP 和 XML: 使用expat函數(shù)(二)
  讓我們看一下實際處理這個文檔的PHP代碼。



/*NewsBoy : News system for the web written in PHP by Justin Grant (Web: jusgrant.cjb.net or justin.host.za.net Mail: justin@glendale.net)25 March V0.0.2 Converted Newsboy to a PHP class, allowing the layout to be easily modified. Also added made the HTML that is genrated a little easier to read.24 March V0.0.1 Just completed the intial version, very rough and basic.*/
class newsboy { var $xml_parser; var $xml_file; var $html; var $open_tag ; var $close_tag ;
//Class Constructor
function newsboy() { $this->xml_parser = ""; $this->xml_file = ""; $this->html = ""; $this->open_tag = array(
//these are the default settings but they are quite easy to modify
"NEWSBOY" => "nn", "STORY" => " ", "DATE" => "", "SLUG" => " ", "TEXT" => "", "PIC" => "", "NEWLINE" => "" ); $this->close_tag = array( "NEWSBOY" => "
nnn", "STORY" => "", "DATE" => "", "SLUG" => "
", "TEXT" => "n", "PIC" => " "
" ); }
//Class Destructor (has to be invoked manually as PHP does not support destructors)

function destroy() { xml_parser_free($this->xml_parser); }
//Class Members
function concat($str) { $this->html .= $str; }
function startElement($parser, $name, $attrs) { //global $open_tag; if ($format= $this->open_tag[$name]) { $this->html .= $format; } }
function endElement($parser, $name) { global $close_tag; if ($format= $this->close_tag[$name]) { $this->html .= $format; } }
function characterData($parser, $data) { $this->html .= $data; }
/* function PIHandler($parser, $target, $data) { //switch (strtolower($target)){ // case "php": eval($data); // break; //} }*/
function parse() { $this->xml_parser = xml_parser_create(); xml_set_object($this->xml_parser, &$this); // use case-folding so we are sure to find the tag in $map_array
xml_parser_set_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true); xml_set_element_handler($this->xml_parser, "startElement", "endElement"); xml_set_character_data_handler($this->xml_parser, "characterData");//xml_set_processing_instruction_handler($this->xml_parser, "PIHandler");
if (!($fp = fopen($this->xml_file, "r"))) { die("could not open XML input"); } while ($data = fread($fp, 4096)) { if (!xml_parse($this->xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->xml_parser)), xml_get_current_line_number($this->xml_parser))); } } }}
?>



--------------------------------------------------------------------------------

  在這個類的構造函數(shù)中,我創(chuàng)建了打開與關閉兩個標記數(shù)組。數(shù)組的關鍵字與我后面將要分析的標記是
一樣的,并且它們相應的值包含格式化打開與關閉標記的HTML代碼。

  我定義了一個簡單的類析構函數(shù)用來當我們不再需要它時釋放XML 分析器。這個函數(shù)不得不手工調用,
因為PHP不支持當一個對象釋放時自動調用類的析構函數(shù)。

  然后我定義了在XML文檔中用來分析打開和關閉標記的主回調方法。我也定義了一個數(shù)據(jù)分析方法, 將
用于當打開和關閉標記中有數(shù)據(jù)時,對數(shù)據(jù)進行簡單的格式化,后面我將向你演示如何將這些回調方法注冊
到分析器中。

  在startElement和closeElement(當分析到一個打開或關閉標專時被分別調用)中使用 標記的名字
作為索引鍵值對相應的數(shù)組進行查詢。如果那個鍵值存在,則返回值并且追加到類的'html' 屬性的后面。
'html'屬性將在以后我們真正顯示文檔內容的時候使用。

  characterData方法簡單地將標記之間的值加到類的html屬性的后面。

  被注釋起來的叫PIHandler的方法是一個回調函數(shù),我還未曾實現(xiàn)它。如果它存在的話,它將直接在XML
文檔中處理php腳本。

  現(xiàn)在,讓我解釋一下主要的分析方法的調用,你猜一猜,parse()!!!

  第一行調用了函數(shù)xml_parser_create(),它將返回一個expat的xml分析器的實例,并且被保存在類的
屬性&this->xml_parser中。

  下一步,我們需要用函數(shù)xml_set_object()來注冊一個類方法的回調函數(shù)。

  我是這樣使用的,xml_set_object($this->xml_parser, &$this)。我在第一個參數(shù)中指定了用
來保存xml 分析器的類屬性,然后在第二個參數(shù),我指定了PHP對象的實例地址。這個可以讓分析器 知道全
部將要注冊的回調函數(shù),是在那個地址上指定類的實際的方法。這就象c或c++中的一個'引用傳遞',也有人
簡單地叫做'引用變量'。

  在下一行,我調用了xml_parser_set_option()設置了一個xml分析器的屬性,使用大小寫折疊( case
folding)。大小寫折疊只是告訴分析器知道,當我分析我的XML文檔時我并不關心大小寫敏感,但是 如果你
想使用大小寫敏感來定義兩個不同的標記,如或,你可以不設置它。

  通過使用xml_set_element_handler(),我指定了用于開始和結束標記的回調函數(shù),名字是
"startElement"和"endElement"。

  接著,我使用xml_set_character_data_handler()來指定字符數(shù)據(jù)的處理句柄為名為
characterData()的回調函數(shù)。被注釋的函數(shù)調用,xml_set_processing_instruction_handler(),
是一個我用于注冊函數(shù) PIHandler()的調用。PIHandler可以被包括在XML文檔中處理php代碼。

  其它的代碼只是很簡單地讀XML文件并且分析它。如果一個錯誤發(fā)生,那么錯誤明細將返回,包括錯誤
發(fā)生的行號。??

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/316795.htmlTechArticlePHP 和 XML: 使用expat函數(shù)(二) 讓我們看一下實際處理這個文檔的PHP代碼。 /*NewsBoy : News system for the web written in PHP by Justin Grant (Web: jusgrant.cjb.n...
本站聲明
本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
PHP調用AI智能語音助手 PHP語音交互系統(tǒng)搭建 PHP調用AI智能語音助手 PHP語音交互系統(tǒng)搭建 Jul 25, 2025 pm 08:45 PM

用戶語音輸入通過前端JavaScript的MediaRecorderAPI捕獲并發(fā)送至PHP后端;2.PHP將音頻保存為臨時文件后調用STTAPI(如Google或百度語音識別)轉換為文本;3.PHP將文本發(fā)送至AI服務(如OpenAIGPT)獲取智能回復;4.PHP再調用TTSAPI(如百度或Google語音合成)將回復轉為語音文件;5.PHP將語音文件流式返回前端播放,完成交互。整個流程由PHP主導數(shù)據(jù)流轉與錯誤處理,確保各環(huán)節(jié)無縫銜接。

如何用PHP搭建社交分享功能 PHP分享接口集成實戰(zhàn) 如何用PHP搭建社交分享功能 PHP分享接口集成實戰(zhàn) Jul 25, 2025 pm 08:51 PM

在PHP中搭建社交分享功能的核心方法是通過動態(tài)生成符合各平臺要求的分享鏈接。1.首先獲取當前頁面或指定的URL及文章信息;2.使用urlencode對參數(shù)進行編碼;3.根據(jù)各平臺協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶點擊分享;5.動態(tài)生成頁面OG標簽優(yōu)化分享內容展示;6.務必對用戶輸入進行轉義以防止XSS攻擊。該方法無需復雜認證,維護成本低,適用于大多數(shù)內容分享需求。

如何用PHP結合AI實現(xiàn)文本糾錯 PHP語法檢測與優(yōu)化 如何用PHP結合AI實現(xiàn)文本糾錯 PHP語法檢測與優(yōu)化 Jul 25, 2025 pm 08:57 PM

要實現(xiàn)PHP結合AI進行文本糾錯與語法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開源NLP庫;2.通過PHP的curl或Guzzle調用API并處理返回結果;3.在應用中展示糾錯信息并允許用戶選擇是否采納;4.使用php-l和PHP_CodeSniffer進行語法檢測與代碼優(yōu)化;5.持續(xù)收集反饋并更新模型或規(guī)則以提升效果。選擇AIAPI時應重點評估準確率、響應速度、價格及對PHP的支持。代碼優(yōu)化應遵循PSR規(guī)范、合理使用緩存、避免循環(huán)查詢、定期審查代碼,并借助X

PHP實現(xiàn)商品庫存管理變現(xiàn) PHP庫存同步與報警機制 PHP實現(xiàn)商品庫存管理變現(xiàn) PHP庫存同步與報警機制 Jul 25, 2025 pm 08:30 PM

PHP通過數(shù)據(jù)庫事務與FORUPDATE行鎖確保庫存扣減原子性,防止高并發(fā)超賣;2.多平臺庫存一致性需依賴中心化管理與事件驅動同步,結合API/Webhook通知及消息隊列保障數(shù)據(jù)可靠傳遞;3.報警機制應分場景設置低庫存、零/負庫存、滯銷、補貨周期和異常波動策略,并按緊急程度選擇釘釘、短信或郵件通知責任人,且報警信息需完整明確,以實現(xiàn)業(yè)務適配與快速響應。

超越燈堆:PHP在現(xiàn)代企業(yè)體系結構中的作用 超越燈堆:PHP在現(xiàn)代企業(yè)體系結構中的作用 Jul 27, 2025 am 04:31 AM

PHPisstillrelevantinmodernenterpriseenvironments.1.ModernPHP(7.xand8.x)offersperformancegains,stricttyping,JITcompilation,andmodernsyntax,makingitsuitableforlarge-scaleapplications.2.PHPintegrateseffectivelyinhybridarchitectures,servingasanAPIgateway

PHP中的對象關聯(lián)映射(ORM)性能調整 PHP中的對象關聯(lián)映射(ORM)性能調整 Jul 29, 2025 am 05:00 AM

避免N 1查詢問題,通過提前加載關聯(lián)數(shù)據(jù)來減少數(shù)據(jù)庫查詢次數(shù);2.僅選擇所需字段,避免加載完整實體以節(jié)省內存和帶寬;3.合理使用緩存策略,如Doctrine的二級緩存或Redis緩存高頻查詢結果;4.優(yōu)化實體生命周期,定期調用clear()釋放內存以防止內存溢出;5.確保數(shù)據(jù)庫索引存在并分析生成的SQL語句以避免低效查詢;6.在無需跟蹤變更的場景下禁用自動變更跟蹤,改用數(shù)組或輕量模式提升性能。正確使用ORM需結合SQL監(jiān)控、緩存、批量處理和適當優(yōu)化,在保持開發(fā)效率的同時確保應用性能。

用PHP和RabbitMQ建造彈性微服務 用PHP和RabbitMQ建造彈性微服務 Jul 27, 2025 am 04:32 AM

要構建彈性的PHP微服務,需使用RabbitMQ實現(xiàn)異步通信,1.通過消息隊列解耦服務,避免級聯(lián)故障;2.配置持久化隊列、持久化消息、發(fā)布確認和手動ACK以確??煽啃?;3.使用指數(shù)退避重試、TTL和死信隊列安全處理失??;4.通過supervisord等工具守護消費者進程并啟用心跳機制保障服務健康;最終實現(xiàn)系統(tǒng)在故障中持續(xù)運作的能力。

python run shell命令示例 python run shell命令示例 Jul 26, 2025 am 07:50 AM

使用subprocess.run()可安全執(zhí)行shell命令并捕獲輸出,推薦以列表傳參避免注入風險;2.需要shell特性時可設shell=True,但需警惕命令注入;3.使用subprocess.Popen可實現(xiàn)實時輸出處理;4.設置check=True可在命令失敗時拋出異常;5.簡單場景可直接鏈式調用獲取輸出;日常應優(yōu)先使用subprocess.run(),避免使用os.system()或已棄用模塊,以上方法覆蓋了Python中執(zhí)行shell命令的核心用法。

See all articles