プロが教える店舗&オフィスのセキュリティ対策術

http://works.xrea.jp/headline.php
上記サイトにてPHPを利用したRSSの取得と解析に挑戦しています。
PHPについては全くの素人です。

説明どおりにやってもうまくいきません。ブラウザで見ると下記のように表示されます。
channel['title'];
$title = mb_convert_encoding($title, "EUC-JP", "auto");
echo "<h4>$title</h4>?n";
echo "<ul>?n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "EUC-JP", "auto");
$url = $item[link];
echo "<li><a href=?"$url?">$title</a></li>?n";
}
echo "</ul>?n";
?>


そもそもPHPはhtmlに埋め込んで使えるのでしょうか?
htmlはDOCTYPE宣言からはじまるxthmlです。
サーバーはPHPが使えるものです。

教えてください。よろしくお願いします。

A 回答 (5件)

magpierss-0.5.2.tar.gz はダウンロードしましたか?


アップロードしましたか?

全引用
http://works.xrea.jp/headline.php

---------------------------------------------------------------
RSSヘッドライン
MagpieRSSの紹介 -PHPで作成するヘッドライン-

PHPでリモートのRSS(RDF)を取得、解析、そしてキャッシュまで可能なスクリプト RSS0.9とRSS1.0に対応。 当サイトのトップページで表示させているものです
入手先 : http://magpierss.sourceforge.net/

例えば、index.phpにスラッシュドット・ジャパンのヘッドラインを埋め込むとします。
上記URLにてMagpieRSS (magpierss-0.5.2.tar.gz) を入手。
magpierss-0.5.2.tar.gz を解凍
拡張子が .inc のファイルとextlibフォルダをindex.phpと同じディレクトリにアップロード
index.phpと同じディレクトリにcacheという名前のディレクトリを作る
index.phpの中のヘッドラインを埋め込みたい位置に以下のコードを挿入

<?php
require_once 'rss_fetch.inc';
$url = 'http://slashdot.jp/slashdot.rdf';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "EUC-JP", "auto");
echo "<h4>$title</h4>\n";
echo "<ul>\n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "EUC-JP", "auto");
$url = $item[link];
echo "<li><a href=\"$url\">$title</a></li>\n";
}
echo "</ul>\n";
?>


$url = 'http://slashdot.jp/slashdot.rdf';
この行は取得するRSSファイルのURLを指定しています。

$title = mb_convert_encoding($title, "EUC-JP", "auto");
この行は日本語文字コードを変換している部分です。 "EUC-JP" の部分はindex.phpの出力文字コードにあわせて SJIS, EUC-JP, JIS, UTF-8 の中から指定します。
mb_convert_encodingが使えないサーバーの場合はjcode.phpsを使います。

配布元 : http://www.spencernetwork.org/jcode/

ヘッドラインの表示数を指定したい場合は、array_sliceを使ってみてください
例) : 10個の場合
$rss->items = array_slice($rss->items, 0, 10);
foreach ($rss->items as $item )
    • good
    • 0
この回答へのお礼

ありがとうございます。
magpierss-0.5.2.tar.gzはインストールしました。
一応ご紹介いただいたサイトを見ながら作業したので手順は間違っていないと思います。

お礼日時:2005/09/05 08:45

見たところ、<?php が有効になってないようです。

(すべてHTMLとみなしているようです)

このphpファイルの拡張子は xxx.php (あるいは xxx.cgi)等となっているでしょうか?

>そもそもPHPはhtmlに埋め込んで使えるのでしょうか?
いいえ。htmlがphpに埋め込んで使えるのであって、phpをhtmlに埋め込んでは使えません。

例)
aaa.php というファイル名
-------------------------
<html>   ---- ここから HTML
<head><title>aaa</title></head>
<body>   ---- ここまで HTML
<?php   ---- ここから php
echo 'hello<br>';
echo '</body>';
echo '</html>';
?>     ---- ここまで php
-------------------------
    • good
    • 0
この回答へのお礼

ありがとうございます。
いただいた例はページ全体がphpで生成される感じですか?
1ページのうち一部分だけにphpを使いたいのですが…

お礼日時:2005/09/05 09:00

ANo2です。



>いただいた例はページ全体がphpで生成される感じですか?
>1ページのうち一部分だけにphpを使いたいのですが…

 phpを使用するには、ファイルの拡張子を xxx.php (あるいはxxx.cgi)等
としなければ使用できません。
 ですので、ファイルの拡張子が xxxx.html では不可です。
(ファイルの拡張子によって apache が、これはHTMLなのかphpなのかを
判断します)

 ですので、拡張子をxxx.phpとすれば、「一部分だけにphp」の構文を
コーディングしてもOKです。
    • good
    • 0
この回答へのお礼

度々ありがとうございます。
今教えていただいたとおりにしたみたら、
Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in…
と出ました。『,』か『;』が足りなってことですか?

index.php内に使用したphpは
<?php
require_once 'rss_fetch.inc';
$url = 'http://slashdot.jp/slashdot.rdf';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "EUC-JP", "auto");
echo "<h4>$title</h4>?n";
echo "<ul>?n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "EUC-JP", "auto");
$url = $item[link];
echo "<li><a href=?"$url?">$title</a></li>?n";
}
echo "</ul>?n";
?>

です。http://works.xrea.jp/headline.phpでコピーしたものなんですがどこが足りないのでしょうか。

お礼日時:2005/09/05 09:48

>Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in…


>と出ました。『,』か『;』が足りなってことですか?

 この場合は in ... の後に記述されている場所で、構文のエラーが発生しているという事です。「『,』か『;』が足りない・・・」という事が原因の場合もあります。

 この場合は、ちょっとソースを見ると、
$title = $item[title]; ・・・・ $title = $item['title'];
$url = $item[link]; ・・・・・ $url = $item['link'];
 では無いでしょうか?
(合っているかは解りませんが・・・)
    • good
    • 0
この回答へのお礼

>$title = $item[title]; ・・・・ $title = $item['title'];
>$url = $item[link]; ・・・・・ $url = $item['link'];
と修正してみました。

ブラウザではまた同じようなエラーがでました。
in以後にxxxxxx.php on line 110と書いてあります。
phpファイルの110行目は
echo "<li><a href=?"$url?">$title</a></li>?n";
です。この行に構文のエラーがあるのでしょうか?

何度も何度もすみません

お礼日時:2005/09/05 15:34

> phpファイルの110行目は


> echo "<li><a href=?"$url?">$title</a></li>?n";

 投稿時か何かの都合で ?" 等になっているのかと思いましたが、そうでなければ、ここも違っています。
 ?" のところは全て \" です。
 また、構文エラーは出ないかと思いますが、?n のところも全て \n のハズ
です。(他の行も含めて全てです)

 <?php と ?> の所はそのままでOKです

 また、phpに関しては、以下のユーザーマニュアルを参照してみてはいかがでしょうか。

参考URL:http://www.php.net/manual/ja/
    • good
    • 0
この回答へのお礼

ありがとうございます。
そう言われて気づきましたが、?"は投稿時の都合のようです。
手元のデータは全て?"となっています。

教えていただいたサイトを見て勉強してみます。
また何か気づいた事がありましたらお願いします。

お礼日時:2005/09/05 16:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!