Posted by : Izumikawa Fukumi 2013年2月13日水曜日

今回Google+のRSSをPHPで読み込んでみました。
まだRSSの読み込む方法が分からない方は、必見です。

僕も今回2回目のRSS取得です。
間違っている所は、コメントに書いて下さい。


まずは、ソースを見て下さい。


<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
 
<?php
 
$xmlname = "http://gplus.slfeed.net/RSS2/103883213408660487064";
$xml = simplexml_load_file($xmlname);
$htmla = '<hr>';
for($i=0; $i <= 9; $i++) {
    print $i;
    print $xml -> channel -> item[$i] -> title . '<br>';
    print $xml -> channel -> item[$i] -> link . '<br>';
    print $xml -> channel -> item[$i] -> pubDate . '<br>';
    print $xml -> channel -> item[$i] -> description . '<br>';
    print $xml -> channel -> item[$i] -> title . '<br>';
    print $htmla;
}
 
?>
    </body>
</html>


XML取得方法

最初に以下のコードを入力して実行してみて下さい。

$xmlname = "http://gplus.slfeed.net/RSS2/103883213408660487064";
$xml = simplexml_load_file($xmlname);
 
print_r($xml);

以下の様なコードが出て来たと思います。




注目する場所は、赤の場所です。


この赤の場所は、投稿のルートタグといでも言えるでしょう
赤い枠に囲まれているタグを辿ってXMLデータを取得します。

さて実際に先ほど書いたソースの詳細を見ていきましょう。

ソース解説

$xml = simplexml_load_file($xmlname);
simplexml_load_file()関数は、XMLデータを取得する為の関数です。

for($i=0; $i <= 9; $i++)
forでは、9回繰り返す様にしています。


for解説

forの使い方が分からない方の為説明させていただきます。

まず変数を作ります。「$i」
$iの変数の中に「0」を代入します。

ここまでは、前回の解説で説明したので分かると思います。
次は、ちょっと複雑になります。

このfor文では、値が一致しない限り同じ処理を繰り返します。
値が同じになったらforから抜け出す事が出来ます。

と言う事は、$iに0が代入されているので0が9になるまで
同じ処理が繰り返されます。

$i <= 9;

ただ$iが0だから無限に抜け出せないじゃんと思うかもしれませんが、
式の最後に$i++となっていますよね?
そうすると値が1プラスされるので自動的にiの値が0から1になります。
そうすれば繰り返すごとに1増えていくので9回目にちゃんと抜け出せます。



print $xml -> channel -> item[$i] -> title . '<br>';
これは、XMLデータへアクセスしています。
上で説明した「ルート」を指定します。
この場合、

$xml ->「XMLファイルの」
channel ->「channelタグの中の」
item ->「itemタグの中の」
title 「titleタグの中を表示する」

と言う意味になります。
ここで疑問が湧いて来たと思いますが、
item[$i]となっているが間違っているぞ!!

となると思いますがこれは9個の投稿を簡単に取得する為の
1つの裏技? です。

[ ]の中には、タグの番号を入力します。
itemタグは、複数ある為phpでは、番号を付けて細かい所までアクセス出来る様に、
なっています。

forでは、9回繰り返し処理をしますよね?
その時$iにその繰り返された数が入ります。

1回目の繰り返しの時は、1が代入されて$iが1となります。
2回目には、$iには、2が代入されます。

そしたら0から9まで繰り返されるので最終的には$iには、
123456789が入っていきます。


0回目 $i = 0;
1回目 $i = 1;
2回目 $i = 2;

この様にどんどん数字が変わりますので、
[0]~[9]まで書かなくても$iに0~9まで数字が入るので、
書く物を少なくする事が可能です。



[$i]にしなかった時の例...



//[0]
print $xml -> channel -> item[0] -> title;
print $xml -> channel -> item[0] -> link;
print $xml -> channel -> item[0] -> pubDate;
print $xml -> channel -> item[0] -> title;
//[1]
print $xml -> channel -> item[1] -> title;
print $xml -> channel -> item[1] -> link;
print $xml -> channel -> item[1] -> pubDate;
print $xml -> channel -> item[1] -> title;
//[2]
print $xml -> channel -> item[2] -> title;
print $xml -> channel -> item[2] -> link;
print $xml -> channel -> item[2] -> pubDate;
print $xml -> channel -> item[2] -> title;
//[3]
print $xml -> channel -> item[3] -> title;
print $xml -> channel -> item[3] -> link;
print $xml -> channel -> item[3] -> pubDate;
print $xml -> channel -> item[3] -> title;
//[4]
print $xml -> channel -> item[4] -> title;
print $xml -> channel -> item[4] -> link;
print $xml -> channel -> item[4] -> pubDate;
print $xml -> channel -> item[4] -> title;
//[5]
print $xml -> channel -> item[5] -> title;
print $xml -> channel -> item[5] -> link;
print $xml -> channel -> item[5] -> pubDate;
print $xml -> channel -> item[5] -> title;
//[6]
print $xml -> channel -> item[6] -> title;
print $xml -> channel -> item[6] -> link;
print $xml -> channel -> item[6] -> pubDate;
print $xml -> channel -> item[6] -> title;
//[7]
print $xml -> channel -> item[7] -> title;
print $xml -> channel -> item[7] -> link;
print $xml -> channel -> item[7] -> pubDate;
print $xml -> channel -> item[7] -> title;
//[8]
print $xml -> channel -> item[8] -> title;
print $xml -> channel -> item[8] -> link;
print $xml -> channel -> item[8] -> pubDate;
print $xml -> channel -> item[8] -> title;
//[9]
print $xml -> channel -> item[9] -> title;
print $xml -> channel -> item[9] -> link;
print $xml -> channel -> item[9] -> pubDate;
print $xml -> channel -> item[9] -> title;


上記の様に書きたくないなら[$i]の様に書きましょう

以上で、XMLの読み込みは、終了です。


後は自由にカスタムして完了(*´∀`*)


<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
 
<?php
 
$xmlname = "http://gplus.slfeed.net/RSS2/103883213408660487064";
$xml = simplexml_load_file($xmlname);
 
$htmla = '<hr>';
for($i=0; $i <= 9; $i++) {
    $p1 = $xml -> channel -> item[$i] -> title . '<br>';
    $p2 = $xml -> channel -> item[$i] -> link . '<br>';
    $p3 = $xml -> channel -> item[$i] -> pubDate . '<br>';
    $p4 = $xml -> channel -> item[$i] -> description . '<br>';
    $p5 = $xml -> channel -> item[$i] -> title . '<br>';
    print '<h2><a href="' . $p2 . '">' . $p1 . '</a></h2><p>' . $p4 . '</p><hr><br>';
    
 
}
?>
    </body>
</html>


- Copyright © I aim to creator. - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -