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

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

WBOY
リリース: 2016-06-21 09:02:19
オリジナル
1034 人が閲覧しました

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=f_channel["link"], ?>>$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=s_channel["link"], ?>>$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
=f_channel["link"], ?>>$f_channel["title"], ?> <br> <ul> // 項目を反復処理します array
for ($x=0, $x<$maxItems, $x++) {
if (is_array($f_items) [$x]))
{
// データを印刷します
$item = $f_items[$x],



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