検索
ホームページphp教程php手册PHPとXML:expat関数の使い方(2)

PHPとXML:expat関数の使い方(2)

Jun 13, 2016 pm 12:37 PM
phpxml使用関数そして実際の私たち

 PHP と XML: useexpat 関数数(二)
次の手順でこの文書を処理します。



/*NewsBoy : PHP で書かれた Web 用のニュース システムJustin Grant (Web: jusgrant.cjb.net または justin.host.za.net Mail: justin@glendale.net) 3 月 25 日 V0.0.2 Newsboy を PHP クラスに変換し、レイアウトを簡単に変更できるようにしました。生成される HTML も少し読みやすくなりました。 3 月 24 日 V0.0.1 非常に大まかで基本的な初期バージョンが完成しました。*/
class newsboy { var $xml_parser; var $xml_file;変数$html; var $open_tag ; var $close_tag ;
//クラス コンストラクター
function newsboy() { $this->xml_parser = ""; $this->xml_file = ""; $this->html = ""; $this->gt;open_tag = array(
//これらはデフォルト設定ですが、変更は非常に簡単です
"NEWSBOY" => "nn", "STORY" =>gt; " ", "DATE " => ""、"SLUG" => " "、"TEXT" => ""、"PIC" => ""、"NEWLINE" => "" ); $this->close_tag = array( "ニュースボーイ" => "
nnn", "STORY" => "", "DATE" => "", "SLUG" => "
", "TEXT" => "n", "PIC" => " "
" ); }
//クラス デストラクター (PHP はデストラクターをサポートしていないため、手動で呼び出す必要があります)

function destroy() { xml_parser_free($this->xml_parser); }
//クラスメンバー
function concat($str) { $this->html } 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 (strto lower($target)) { // case "php": eval($data); // }*/
function parse() { $this->xml_parser = xml_set_object($this->) xml_parser, &$this); // $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("XML 入力を開けませんでした"); } while ($data = fread($fp, 4096)) { if (!xml_parse($this->xml_parser, $data, feof($fp))) { die(sprintf("XML エラー: %s 行目) %d", xml_error_string(xml_get_error_code($this->xml_parser)), xml_get_current_line_number($this->xml_parser))); } } }}
?>



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

ここにいますこの種の構造関数では、2 つのマークを開くための数字のグループを作成しました。この数字と後で分析するマークは、
と同様であり、それらの値には、マークを付けるための形式化が含まれています。承認されたHTMLコード

XML アナライザーをもう必要としないために、単一の種類の解析関数を使用することにしました。この関数は手作業で調整することができません。
は、PHP が各オブジェクトの解放時間をサポートしていないためです。

その後、XML 文書内のオープンおよびオフのマークを分析するために使用する主回帰メソッドを定義しました。また、
を使用するためのデータ分析メソッドも定義しました。開始および終了マークにデータがある場合、データに対して完全な形式化が行われます。次に、これらの回帰メソッドがアナライザーに
を追加する方法をデモで説明します。

オープンまたはリンクのいずれかに個別に調整されます) で、指定された名前
がインデックス値として使用され、対応する数のグループが検査されます。
'html' プロパティは、後で私が実際にテキストのコンテンツを表示するときに使用します。 🎜> 登録されて呼び出された PIHandler のメソッドは、関数の逆関数であり、これも実現していません。 存在する場合は、XML
文中で php スクリプトを直接処理します。

で、私は次の主要な分析方法の解析用、パース一猜、parse()!!!

最初は関数xml_parser_create()を使用して、expatのxmlアナライザーの例を返し、クラスの
プロパティ&this->xml_parser内に保存されています。

次に、関数 xml_set_object() を使用して、クラス メソッドのコールバック関数を登録する必要があります。

xml_set_object($this->xml_parser, &$this) のように使用します。最初のパラメータでは、
を使用して XML パーサーを保持するクラス属性を指定し、2 番目のパラメータでは PHP オブジェクトのインスタンス アドレスを指定しました。これにより、アナライザーは、登録されるすべての
コールバックが、そのアドレスにある指定されたクラスの実際のメソッドであることを認識します。これは c または c の「参照渡し」のようなもので、
単に「参照変数」と呼ぶ人もいます。

次の行では、xml_parser_set_option() を呼び出して、case
折り畳みを使用して XML パーサー属性を設定します。大文字と小文字の折りたたみは、XML 文書を解析するときに大文字と小文字の区別を気にしないことをパーサーに知らせるだけですが、
または のような 2 つの異なるタグを定義するために大文字と小文字の区別を使用したい場合は、それを設定することはできません。

xml_set_element_handler() を使用して、
"startElement" および "endElement" という名前の開始タグと終了タグのコールバック関数を指定します。

次に、xml_set_character_data_handler() を使用して、文字データ処理ハンドルを
characterData() という名前のコールバック関数として指定します。注釈付きの関数呼び出し xml_set_processing_instruction_handler()、
は、関数 PIHandler() を登録するために使用した呼び出しです。 PIHandler を XML ドキュメントに含めて、PHP コードを処理できます。

コードの残りの部分は、XML ファイルを読み取って解析するだけです。エラーが発生した場合は、エラー
が発生した行番号を含むエラーの詳細が返されます。​

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター