ホームページ > バックエンド開発 > PHPの問題 > PHPパーサーとは何ですか

PHPパーサーとは何ですか

爱喝马黛茶的安东尼
リリース: 2023-02-24 21:28:01
オリジナル
3480 人が閲覧しました

PHPパーサーとは何ですか

組み込みの Expat パーサーを使用すると、PHP で XML ドキュメントを処理できます。

XML とは何ですか?

XML は、データの内容に重点を置いてデータを記述するために使用されます。 XML ファイルはデータの構造を記述します。

XML には、事前定義されたタグはありません。独自のタグを定義する必要があります。

エクスパットとは何ですか?

XML ドキュメントの読み取りと更新、作成、処理を行うには、XML パーサーが必要です。

XML パーサーには 2 つの基本的なタイプがあります。

·ツリーベースのパーサー: このパーサーは、XML ドキュメントをツリー構造に変換します。ドキュメント全体を分析し、ドキュメント オブジェクト モデル (DOM) などのツリーの要素にアクセスするための API を提供します。

·イベントベースのパーサー: XML ドキュメントを一連のイベントとして扱います。特定のイベントが発生すると、パーサーはそれを処理する関数を呼び出します。

Expat パーサーはイベントベースのパーサーです。

イベントベースのパーサーは、XML ドキュメントの結果ではなく、その内容に焦点を当てます。このため、イベントベースのパーサーはツリーベースのパーサーよりも高速にデータにアクセスできます。

次の XML フラグメントを見てください:

<from>John</from>
ログイン後にコピー

イベントベースのパーサーは、上記の XML を一連の 3 つのイベントとして報告します:

·開始要素: from

·開始 CDATA 部分、値: John

·終了要素: from

上記の XML例には、整形式の XML が含まれています。ただし、この例は、関連付けられた文書型宣言 (DTD) がなく、埋め込み DTD もないため、無効な XML です。

関連する推奨事項:「php Getting Started Tutorial

ただし、Expat パーサーを使用する場合には違いはありません。 Expat は、有効性をチェックせず、DTD を無視するパーサーです。

イベントベースの非検証 XML パーサーとして、Expat は高速かつ軽量であるため、PHP Web アプリケーションに最適です。

注: XML ドキュメントは適切な形式である必要があります。そうでない場合、Expat はエラーを生成します。

インストール

XML Expat パーサーは、PHP コアの不可欠な部分です。これらの機能を使用するためにインストールは必要ありません。

#XML ファイル

この例では次の XML ファイルが使用されます:



George
<from>John</from>
Reminder
Don't forget the meeting!
ログイン後にコピー

XML パーサーの初期化

PHP で XML パーサーを初期化し、さまざまな XML イベントのハンドラーを定義してから、XML ファイルを解析する必要があります。

例:

<?php 
//Initialize the XML parser
$parser=xml_parser_create();
 
//Function to use at the start of an element
function start($parser,$element_name,$element_attrs)
 {
 switch($element_name)
  {
  case "NOTE":
  echo "-- Note --<br />";
  break; 
  case "TO":
  echo "To: ";
  break; 
  case "FROM":
  echo "From: ";
  break; 
  case "HEADING":
  echo "Heading: ";
  break; 
  case "BODY":
  echo "Message: ";
  }
 }
 
//Function to use at the end of an element
function stop($parser,$element_name)
 {
 echo "<br />";
 }
 
//Function to use when finding character data
function char($parser,$data)
 {
 echo $data;
 }
 
//Specify element handler
xml_set_element_handler($parser,"start","stop");
 
//Specify data handler
xml_set_character_data_handler($parser,"char");
 
//Open XML file
$fp=fopen("test.xml","r");
 
//Read data
while ($data=fread($fp,4096))
 {
 xml_parse($parser,$data,feof($fp)) or 
 die (sprintf("XML Error: %s at line %d", 
 xml_error_string(xml_get_error_code($parser)),
 xml_get_current_line_number($parser)));
 }
 
//Free the XML parser
xml_parser_free($parser);
 
?>
ログイン後にコピー

上記のコードの出力:

-- Note --
To: George
From: John
Heading: Reminder
Message: Don&#39;t forget the meeting!
ログイン後にコピー
動作原理の説明:

xml_parser_create によって初期化される() 関数 XML パーサー

#さまざまなイベント ハンドラーに一致する関数の作成

#パーサーが検出したタイミングを定義する xml_set_element_handler() 関数を追加します。開始タグと終了タグに到達したときに実行される関数

#xml_set_character_data_handler() 関数を追加して、パーサーが文字データを検出したときに実行される関数を定義します

·xml_parse() 関数を使用してファイル「test.xml」を解析します

##エラーがある場合は、xml_error_string() 関数を追加して XML を変換しますテキスト記述へのエラー

·xml_parser_free() 関数を呼び出して、xml_parser_create() 関数に割り当てられたメモリを解放します

以上がPHPパーサーとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート