}
}
// パーサーを破棄します
xml_parser_free($xp),
// 開始タグ ハンドラー
関数 elementBegin($parser, $name, $attributes)
{
global $currentTag, $flag,
// 現在のタグの名前をグローバル スコープにエクスポートします
$currentTag = $name,
// 項目ブロック内の場合、フラグを設定します
if ($name == "ITEM")
{
$flag = 1,
}
}
// 終了タグ ハンドラー
function elementEnd($parser, $name)
{
global $currentTag, $flag,
$currentTag = "",
// 項目ブロックを終了する場合、行を出力してフラグをリセットします
if ($name == "ITEM")
{
echo "
",
$flag = 0,
}
}
// 文字データ ハンドラー
関数 characterData($parser, $data )
{
global $currentTag, $flag,
// 項目ブロック内の場合、項目データを出力します
if (($currentTag = = "タイトル" || $現在のタグ == "リンク" ||
$現在のタグ ==
"説明") && $flag == 1)
{
echo "$currentTag: $data br>",
}
}
?>
不明白を見ますか? 别着急行,次面将会作出解释。
5)捕获旗标
この段落書き首先要為的是设定一部全局变量:
// XML ファイル
$file = "fm-releases.rdf",
// パーサーで使用する変数をいくつか設定します
$ currentTag = "",
$flag = "",
$currentTag保存量は分析器の現在処理される要素の名前—— 必要なものと見なされます。
なぜなら、私の最終的な目標は、チャネル内の個々のアイテム (アイテム) と リンク を表示することだからです。さらに、アナライザーがいつ
$flag 変数は、アナライザーが
次のステップは、SAX パーサーを初期化し、RSSドキュメント。 // パーサーを作成します
$
xp = xml_parser_create(),
// 要素ハンドラーを設定します
xml_set_element_handler($xp, "elementBegin", "elementEnd"),
xml_set_character_data_handler($xp, "characterData"),
xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, TRUE),
/ / XML ファイルを読み取ります
if (!($
fp = fopen($file, "r"))) {
die("読み込めませんでした$file"),
}
// データを解析します
while ($xml =
fread($fp, 4096)) {
if (!
xml_parse($xp, $xml, feof($fp))) {
die("XML パーサー エラー: " .
xml_error_string(xml_get_error_code($xp))),}
}
// パーサー
xml_parser_free($xp),
を破棄しますこのコードはシンプルかつ明確で、コード内のコメントも十分に明確に説明されています。 xml_parser_create() 関数はパーサー インスタンスを作成し、 をハンドル $ に割り当てます。 xp。次に、 は、開始タグ と終了タグ 、およびそれらの間の文字データを処理する コールバック関数を作成します。最後に、xml_parse() 関数 Union を複数回実行しますfread() 呼び出しは、RDF ファイルを読み取り、分析します。
ドキュメント内で開始タグが見つかるたびに、開始タグ プロセッサ elementBegin ( ) が呼び出されます。
// タグハンドラーを開始します
function elementBegin($parser, $name, $attributes)
{
global $currentTag, $flag,
// 現在のタグの名前をグローバル スコープにエクスポートします
$currentTag = $name,
// アイテム ブロック内の場合は、フラグを設定します
if ($name == "ITEM")
{
$flag = 1,
}
}
この関数は、現在のフラグ 名前と属性は開始パラメータとして使用されます。タグ名はグローバル変数 $currentTag に割り当てられます。開始フラグが
同様に、終了タグが見つかった場合、終了タグプロセッサelementEnd() が呼び出されます。 // 終了タグハンドラ
function
elementEnd($parser, $name){
global $
currentTag, $フラグ、$currentTag = "",
// 項目ブロックを終了する場合、行を出力してフラグをリセットします
if ($name == "ITEM")
{
echo "
",
$flag = 0,
}
}
クローズドタグ処理関数は、パラメータとしてタグ名も受け取ります。 の終了タグが見つかった場合、変数 $flag の値は 0、変数 $currentTag の値をクリアします。
では、タグ間の文字データはどのように扱うのでしょうか? これが私たちが興味を持っていることです。まず、キャラクター データ プロセッサ characterData() に挨拶します。 // 文字データ ハンドラー
function
characterData($parser, $data){
global $
currentTag, $ flag,// 項目ブロック内の場合、項目データを出力します
if (($
currentTag == "TITLE" || $currentTag == "LINK" ||$
currentTag =="説明") && $flag == 1)
{
echo "$
currentTag: $data < ;br>",}
}
これで、この関数に渡されたパラメータを確認すると、それがパーサーが現在どのタグを処理しているかを知らずに、開始タグ と終了タグ の間のデータを受け取ります。これが、最初からグローバル変数 $currentTag を導入した理由です。 $flag 変数の値が 1 の場合、つまり、アナライザーが現在
ネスティング時間 (
ネスト時間 )前の例は、問題を説明するためにのみ使用されています。本当に RDF コンテンツを Web サイトに挿入したい場合は、作業を改善する必要があります。したがって、RDF データのフォーマット作業を簡素化するために、以前のスクリプトが改善され、いくつかの新しい機能が追加されました。
basefont face="Verdana"> cellspacing
="5"
cellpadding
="5"> tr
>今日の freshmeat.net の新リリース:
tr> php
// XML ファイル$file = "http://www.freshmeat.net/backend/fm-releases.rdf",
// パーサーで使用する変数をいくつか設定します$currentTag
= "",
$flag = "",$count = 0,
// これはキーを含むチャネル データの連想配列です ("title",
"link",
"description")
$channel = array(),

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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