ホームページ > php教程 > php手册 > PHP を使用して RDF コンテンツを Web サイトに挿入する方法 (3)

PHP を使用して RDF コンテンツを Web サイトに挿入する方法 (3)

WBOY
リリース: 2016-06-21 09:13:50
オリジナル
931 人が閲覧しました

ウェブ|挿入|サイト

ネスト時間

前の例は、問題を説明するためのものです。本当に RDF コンテンツを Web サイトに挿入したい場合は、もう少し工夫する必要があります。したがって、RDF データのフォーマット作業を簡素化するために、以前のスクリプトが改善され、いくつかの新しい機能が追加されました。












// XML ファイル
$file = "http://www.freshmeat.net/backend/fm-releases.rdf";

// パーサーで使用する変数をいくつか設定します
$currentTag = "";
$ flag = "";
$count = 0;

// これはキーを含むチャンネルデータの連想配列です ("title",
"link",
"description")
$channel = array();

// これは配列の配列であり、各配列要素は
を表します。 // 外側の各配列要素はそれ自体が連想配列です
// キー ("title"、"link"、"description") を持ちます
$items = array();

// タグハンドラーを開始します
function elementBegin($parser, $name, $attributes)
{
global $currentTag, $flag;
$currentTag = $name;
// set flag if または ブロックを入力します
if ($name == "ITEM")
{
$flag = 1;
}
else if ($name == "CHANNEL")
{
$flag = 2;
}
}

// 終了タグハンドラー
function elementEnd($parser, $name)
{
global $currentTag, $flag, $count;
$currentTag = "";

// フラグを設定 if または ブロックを終了します
if ($name == "ITEM")
{
$count++;
$flag = 0;
}
else if ($name == "CHANNEL")
{
$flag = 0;
}
}

// 文字データ ハンドラー
function CharacterData($parser, $data)
{
global $currentTag, $flag, $items, $count, $channel;
$data =トリム(htmlspecialchars($data));
if ($currentTag == "TITLE" || $currentTag == "LINK" ||
$currentTag ==
"DESCRIPTION")
{
// $channels にデータを追加[] または $items[] 配列
if ($flag == 1)
{
$items[$count][strto lower($currentTag)] .=
$data;
}
else if ($flag == 2) )
{
$channel[strto lower($currentTag)] .= $data;
}
}

}

// パーサーを作成します
$xp = xml_parser_create();

// 要素ハンドラーを設定します
xml_set_element_handler($
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) ));
}
}

// parser
xml_parser_free($xp);

// $items[] 配列を反復処理して
// 各項目をテーブル行として出力します
foreach ($items as $ item)
{
echo "
"; }

?>
今日の freshmeat.net の新リリース:
"


with 前の段落との主な違いは、このスクリプトが分析中に抽出された情報を保持する 2 つの配列を作成することです。このうち、$channel は処理対象のチャネルの基本的な説明情報を格納する連想配列、$items は個々のチャネル エントリに関する情報を含む 2 次元配列です。 $items 配列の各要素は、それ自体が和集合配列であり、タイトル、URL、および説明のキーワードが含まれています。 $items 配列内の要素の合計数は、RDF ドキュメント内の ブロックの合計数と同じです。

$flag 変数の変更にも注目してください。この変数は、 ブロックが処理されているかどうかに応じて 2 つの値を保持します。これが必要なのは、この方法でのみアナライザーが情報を正しい配列に入れることができるためです。

ドキュメントが解析されたら、あとは簡単です。$items 配列をループし、その中の各項目を表形式で出力します。



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