// これは配列の配列であり、各配列要素は
< を表します。アイテム> // 外側の各配列要素はそれ自体が連想配列です
// キー ("title", "link", "description") を持つ
$items = array(),
// オープニングタグハンドラー
関数 elementBegin($parser, $name, $attributes)
{
global $currentTag, $flag,
$ currentTag = $name,
//
if ($name == "ITEM")
{
$flag = 1,
}
else if ($name == "CHANNEL")
{
$flag = 2,
}
}
// 終了タグハンドラー
function elementEnd($parser, $name)
{
global $currentTag, $flag, $count,
$currentTag = "",
// 終了する場合はフラグを設定
if ($name == "ITEM")
{
$count++,
$flag = 0,
}
else if ($name == "CHANNEL")
{
$flag = 0,
}
}
// 文字データ ハンドラー
関数 characterData($parser, $data)
{
global $currentTag, $flag, $items, $count, $channel,
$data = トリム(htmlspecialchars($data)),
if ($currentTag == "TITLE" || $currentTag == "リンク" ||
$currentTag ==
"DESCRIPTION")
{
// $channels[] または $items[] array
if ($flag == 1)
{
$items[$count] にデータを追加します[strto lower($currentTag)] .=
$data,
}
else if ($flag == 2)
{
$channel[strto lower($currentTag)] .= $data,
}
}
}
// 作成parser
$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_parser_set_option($xp , XML_OPTION_SKIP_WHITE, 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),
// $items[] array
// を反復処理し、各項目をテーブル row
foreach として出力します ($items $item)
{
echo "<tr>href= 。 $アイテム["リンク"] 。 「>」 。 $item["title"] . tr>", }
"<br>" . $item[「説明」] 。 "
?>
本文>