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 ファイルを読み取って解析するだけです。エラーが発生した場合は、エラー
が発生した行番号を含むエラーの詳細が返されます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

メモ帳++7.3.1
使いやすく無料のコードエディター

ホットトピック



