if (!($fp = fopen ($this->file, "r")))
{
die("$this->file を読み取れませんでした"),
}
// データを解析します
while ($xml = fread($fp, 4096))
{
if (!xml_parse($this->) ;xp, $xml, feof($fp)))
{
die("XML パーサー エラー: " .
xml_error_string(xml_get_error_code($this->xp))),
}
}
// パーサーを破棄します
xml_parser_free($this->xp),
}
// 開始タグハンドラー
function elementBegin($parser, $name, $attributes)
{
$this->currentTag = $name,
// に入った場合にフラグを設定します。または <アイテム> block
if ($name == "ITEM")
{
$this->flag = 1,
}
else if ($name == "CHANNEL")
{
$this->flag = 2,
}
}
// 終了タグハンドラー
function elementEnd($parser, $name )
{
$this->currentTag = "",
// を終了する場合にフラグを設定します。または <アイテム> block
if ($name == "ITEM")
{
$this->count++,
$this->flag = 0,
}
else if ( $name == "CHANNEL")
{
$this->flag = 0,
}
}
// 文字データ ハンドラー
関数 CharacterData($parser, $data)
{
$data = trim(htmlspecialchars($data)),
if ($this->gt;currentTag == "タイトル" || $this->currentTag ==
"リンク" || $this->currentTag == "説明")
{
// $channels[] または $items[] 配列にデータを追加します
if ($this->flag == 1)
{
$this- >items[$this->count][strto lower($this->currentTag)] .= $data,
}
else if ($ this->flag == 2)
{
$this->channel[strto lower($this->gt;currentTag)] .= $data,
}
}
}
// チャネル情報を含む連想配列を返します
// ($channel[] 配列)
関数 getChannelInfo()
{
return $this->channel,
}
// item
情報
を含む配列の連想配列を返します// ($items[] 配列)
関数 getItems()
{
return $this->items,
}
}
?>
PHPの種類によく知られた説明であれば、この段落コードは非常に簡単であることが理解される。
このクラスを使用する前に、その中の最初のコードを特に詳しく説明します。 ——即上对xml_set_object()関数数调用的那行
で問題となるのは、この種のツールを使用して、複数のコンテンツを含むソースの Web をどのように生成するかです。
include("class.RDFParser.php"),
// 各チャネルに表示する項目の数
$maxItems = 5,
?>
<basefont face="Verdana">
<表の幅="100%" border="0" セル間隔="5" セルパディング="5"> <tr>
valign=top align=left>
// freshmeat.net チャネルを取得して解析します $f = new RDFParser(), $f-> ;setResource("http://www.freshmeat.net/backend/fm-releases.rdf"), $f->parseResource(), $f_channel = $f ->getChannelInfo(), $f_items = $f->getItems(), // フォーマットして印刷します... ?> href= からの最新のものecho $f_channel["link"], ?>> echo $f_channel["title"], ?> <br> <ul> // 項目を反復処理します array for ($x=0, $x<$maxItems, $x++) { if (is_array($f_items) [$x])) { // データを印刷します $item = $f_items[$x], echo "<li >href= 。 $item["リンク"] 。 「>」 . $item["title"] . "", } } ?> ul>
< /td>
| <i>プライマリページのコンテンツはここですi>
| valign=top align=left>
//slashdot.org チャンネルを取得して解析します $s = new RDFParser()、 $s->setResource("http://slashdot.org/slashdot.rdf")、 $s->parseResource()、 $s_channel = $s->getChannelInfo(), $s_items = $s->gt;getItems(), // ここでフォーマットして印刷します... ?> href= の最新のものecho $s_channel["link"], ?>> echo $s_channel["title"], ?> <br> <ul> // 項目を反復処理します array for ($x=0, $x<$maxItems, $x++) { if (is_array($s_items) [$x])) { // データを印刷します $item = $s_items[$x], echo "<li >href= 。 $item["リンク"] 。 「>」 . $item["title"] . "", } } ?> ul>
< /td>
tr>
このセグメントコードは、「new」 キー文字を使用して 1 つの種類の例を生成すると、 $f = new RDFParser(), 那么就可用类法使用可設置分析的RDF ファイルの位置、 $f->setResource("http://www.freshmeat.net/backend/fm-releases.rdf"), $f->parseResource(), そして、後の処理のために$channelと$itemsの数を取得します。
$f_channel = $f->getChannelInfo(), $f_items = $ f->getItems(), ?>
href= からの最新のものecho $f_channel["link"], ?>> echo $f_channel["title"], ?> <br> <ul> // 項目を反復処理します array for ($x=0, $x<$maxItems, $x++) { if (is_array($f_items) [$x])) { // データを印刷します $item = $f_items[$x],
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
|