概要
XMLとは、Extensible Markup Language(eXtensible Markup Languageの略で、拡張可能なマークアップ言語を意味します)の略です。 XML は、ドキュメントを部分に分割し、それらの部分を識別するセマンティック マークアップを定義する一連のルールです。これはメタ マークアップ言語でもあります。つまり、他のドメイン固有のセマンティックおよび構造化マークアップ言語を定義するための構文言語を定義します。 XML は現在最も注目されているテクノロジーです。 PHP には XML 文書を解析する機能もあります。以下では、PHP における XML の応用について説明します。
XMLの概要
XML (eXtended Markup Language:拡張マークアップ言語)について話すときは、まずHTMLコードの一部を見てみましょう:
<p><center><font color="red">TEXT</font></center></p>
<a href="www.domain.com"><img src="logo. jpg"/>< /a>
</body>
</html>
上記のコードは、構造的には XML の規則に準拠しています。 XML は、データを含むツリー状の構造型として理解できます。
1.規則に準拠していない
3. すべての要素は開始タグと終了タグで構成されている必要があります。要素は または空要素
5. 要素名(つまり、body a p img 上記など)は文字で始まる必要があります。
PHPのXMLパーサーExpatの使い方は? Expat は、PHP スクリプト言語の XML パーサー (XML プロセッサーとも呼ばれる) であり、プログラムが XML ドキュメントの構造とコンテンツにアクセスできるようにします。イベントベースのパーサーです。 XML パーサーには 2 つの基本的なタイプがあります。 ツリーベースのパーサー: XML ドキュメントをツリー構造に変換します。このタイプのパーサーは、結果のツリーの各要素にアクセスするための API を提供しながら、記事全体を解析します。その共通規格は DOM (Document Object Model) です。
イベントベースのパーサー: XML ドキュメントを一連のイベントとして扱います。特別なイベントが発生すると、パーサーは開発者が提供する関数を呼び出してそれを処理します。イベントベースのパーサーは、XML 文書のデータ中心のビューを備えています。これは、XML 文書の構造ではなくデータ部分に焦点を当てていることを意味します。これらのパーサーはドキュメントを最初から最後まで処理し、コールバック関数を通じて要素の開始、要素の終了、特徴データの開始などのイベントをアプリケーションに報告します。
以下は「Hello-World」の XML ドキュメントの例です:
Hello World
イベントベースのパーサーは 3 つのイベントとして報告します:
開始要素:greeting
CDATA の開始item、値は:Hello World
終了要素:greeting
イベントベースのパーサーはドキュメントを記述する構造を生成しません。 もちろん、Expat を使用する場合は、必要に応じて PHP で完全なネイティブ ツリー構造を生成することもできます。 。 CDATA アイテムでは、イベントベースのパーサーは親要素の挨拶情報を取得しません。ただし、下位レベルのアクセスが提供されるため、リソースをより有効に活用し、アクセスを高速化できます。この方法では、ドキュメント全体をメモリに収める必要がなく、実際にはドキュメント全体が実際のメモリ値よりも大きくなる場合もあります。
上記の Hello-World の例には完全な XML 形式が含まれていますが、関連付けられた DTD (Document Type Definition) も埋め込まれた DTD も存在しないため、無効です。ただし、Expat は有効性をチェックしないパーサーであるため、ドキュメントに関連付けられた DTD はすべて無視されます。ドキュメントはまだ完全に形成されている必要があることに注意してください。そうしないと、Expat (他の XML 準拠パーサーと同様) がエラー メッセージを表示して停止します。
Compile Expat ExpatはPHP3.0.6バージョン(またはそれ以降)にコンパイルできます。 Apache 1.3.22 以降、Expat は Apache の一部として含まれています。 Unix システムでは、-with-xml オプションを使用して構成することで、PHP を PHP にコンパイルできます。 PHP が Apache モジュールとしてコンパイルされている場合、Expat はデフォルトで Apache の一部になります。 Windows では、XML ダイナミック リンク ライブラリをロードする必要があります。
XML の例: XMLstats
これから説明する例は、Expat を使用して XML ドキュメントの統計を収集することです。
文書内の各要素について、以下の情報が出力されます。
* 文書内でその要素が使用されている回数
* 要素内の文字データの数
* 要素の親要素
* 子要素の要素
注: デモでは、PHP を使用して要素の親要素と子要素を保存する構造体を生成します
XML パーサー インスタンスの生成に使用される関数は何ですか?
XMLパーサーインスタンスの生成に使用される関数はxml_parser_create()です。このインスタンスは、今後のすべての関数に使用されます。この考え方は、PHP の MySQL 関数の接続タグに非常に似ています。イベントベースのパーサーでは通常、ドキュメントを解析する前に、特定のイベントが発生したときに呼び出されるコールバック関数の登録が必要です。 Expat has no exception events. It defines the following seven possible events:
Object ’ xml_set_character_data_handler() The beginning of character data External entity xml_set_external_entity_ref_handler() External Entity occurrence
Unparsed external entity xml_set_unparsed_entity_decl_handler() Unparsed external entity occurrence
Processing instruction
Default xml_set_default_handler() ハンドラーを指定しないその他のイベント
すべてのコールバック関数は、(他のパラメーターに加えて) 最初のパラメーターとしてパーサーのインスタンスを取る必要があります。
この記事の最後にあるサンプル スクリプトでは、要素処理関数と文字データ処理関数の両方を使用していることに注意してください。要素のコールバック ハンドラー関数は、xml_set_element_handler() を通じて登録されます。
この関数には 3 つのパラメータが必要です:
パーサーのインスタンス
開始要素を処理するコールバック関数の名前
終了要素を処理するコールバック関数の名前
XML ドキュメントの解析を開始するときにコールバック関数が存在する必要があります。これらは、PHP マニュアルに記載されているプロトタイプと一致して定義する必要があります。
例えば、Expatは開始要素のハンドラー関数に3つのパラメータを渡します。スクリプト例では、次のように定義されています:
function start_element($parser, $name, $attrs)
$parser はパーサーフラグ、$name は開始要素の名前、$attrs はすべてを含む配列です要素の属性と値。
XML ドキュメントの解析を開始すると、Expat は開始要素に遭遇するたびに start_element() 関数を呼び出してパラメーターを渡します。
XML 大文字小文字折りオプション
大文字小文字折りオプションをオフにするには、xml_parser_set_option() 関数を使用します。このオプションはデフォルトでオンになっており、ハンドラー関数に渡される要素名が自動的に大文字に変換されます。ただし、XML では大文字と小文字が区別されます (したがって、統計 XML ドキュメントでは大文字と小文字が非常に重要です)。この例では、ケース折りたたみオプションをオフにする必要があります。
ドキュメントを解析する方法は?
すべての準備が完了したら、スクリプトはいよいよ XML ドキュメントを解析できるようになります: Parse
xml_parse() は、xml_parse_from_file() と同様に、エラーが発生した場合、つまり次の場合に false を返します。 XML ドキュメントの形式が不完全です。 xml_get_error_code() 関数を使用して、最後のエラーの数値コードを取得できます。この数値コードを xml_error_string() 関数に渡して、エラー テキスト メッセージを取得します。 XML の現在の行番号を出力し、デバッグを容易にします。 文書を解析するときに、Expat にとって強調する必要がある問題は、文書構造の基本的な記述をどのように維持するかということです。
前述したように、イベントベースのパーサー自体は構造情報を生成しません。ただし、タグ構造は XML の重要な機能です。たとえば、要素シーケンス
ドキュメント構造のミラーを作成するには、スクリプトは少なくとも現在の要素の親要素を知っている必要があります。これは、Exapt の API では不可能であり、コンテキスト情報なしで現在の要素のイベントのみを報告します。したがって、独自のスタック構造を構築する必要があります。
スクリプト例では先入れ後出し(FILO)スタック構造を使用しています。配列を通じて、スタックはすべての開始要素を保存します。開始要素処理関数の場合、現在の要素は array_push() 関数によってスタックの先頭にプッシュされます。同様に、終了要素処理関数は、array_pop() を通じて先頭要素を削除します。
シーケンス
開始要素 book: スタックの最初の要素($stack[0])に「book」を割り当てます。
開始要素title:スタックの先頭($stack[1])に「title」を代入します。
要素タイトル終了: スタック($stack[1])から最上位の要素を削除します。
要素タイトルの終了: スタックから最後の要素を削除します

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。

tostoreauser'snameInappession、starthessession withsession_start()、thensignthenameto $ _session ['username']。1)ousession_start()toinitializethessession.2)assighttheuser'snameto $ _ session ['username']

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい

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

ホットトピック









