現在PHPを勉強中の初心者です。
今回、複数の外部RSSから情報を取得してmysqlへ登録を行うという事をしていて
いくら調べても上手くいかなかった為、質問をさせてください。
「実現したい事」
複数の外部RSSから指定した回数分だけ
サイト名・記事タイトル・記事URL・日時を取得して
mysqlを使ってデータベースに登録を行いたい。
色々調べたり、実際に使ってみた所
「rss-php」では取得エラーが発生することもあり「SimplePie 1.5」を使用する事に決定
参考URL
http://absg.hatenablog.com/entry/2015/10/10/173215
こちらの参考URLのコードを元に一連の流れのコードを書いて見ました。
php
1<?php 2 3try { 4 $db = new \PDO(DSN, DB_USERNAME, DB_PASSWORD); 5 $db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 6 echo "データベースへの接続が出来ました"; 7 8}catch (\PDOException $e) { 9 echo $e->getMessage(); 10 exit; 11} 12 13date_default_timezone_set("Asia/Tokyo"); 14require_once('./autoloader.php'); 15 16$url1[] = [ 17'http://i2chmeijin.blog.fc2.com/', 18'http://www.akb48matomemory.com/index.rdf', 19'http://blog.livedoor.jp/aquarium_matome/index.rdf',]; 20 21$feed = new SimplePie(); 22$feed->set_feed_url($url1[0]); 23$feed->enable_cache(false); //キャッシュ機能はオフで使う 24$success = $feed->init(); 25$feed->handle_content_type(); 26 27if ($success){ 28 29 $i = 0; 30 foreach ($feed->get_items() as $item) { 31 32 //12回分だけforeachを回します。 33 if ($i >= 12 ) { 34 break; 35 }else { 36 $i++; 37 } 38 39 echo $item->get_feed()->get_title()."\n"; //サイトタイトル 40 echo $item->get_title()."\n"; //記事タイトル 41 echo $item->get_link()."\n"; //記事URL 42 echo $item->get_date('Y-m-d h:i:s')."\n"; //記事投稿時刻 43 echo "<br>"; 44 45 $name = $item->get_feed()->get_title(); 46 $title = $item->get_title(); 47 $url = $item->get_link(); 48 $date = $item->get_date('Y-m-d h:i:s'); 49 50 $sql = "insert IGNORE into matome (name, title, url, created) values (:name,:title,:url,:created)"; 51 $stmt = $db->prepare($sql); 52 $stmt->execute([ 53 ':name' => $name, 54 ':title' => $title, 55 ':url' => $url, 56 ':created' => $date 57 ]); 58 59 } 60}else{ 61 echo $feed->error(); 62} 63?>
実行結果:
アクアリウム速報【ミナミヌマエビ】食べられないことを願っててくれ http://blog.livedoor.jp/aquarium_matome/archives/1066872643.html 2017-07-28 12:00:25 2ch名人 第67期王将戦二次予選の組み合わせ決定 http://i2chmeijin.blog.fc2.com/blog-entry-6487.html 2017-07-28 12:00:00 NEWSまとめもりー|2chまとめブログ 【緊急】日本人の洗脳、ついに解けるwwwwww(※画像あり) http://www.akb48matomemory.com/archives/1066861959.html 2017-07-28 11:22:07 NEWSまとめもりー|2chまとめブログ 【衝撃】オードリー春日俊彰、東大合格へwwwwwwwww http://www.akb48matomemory.com/archives/1066866442.html 2017-07-28 10:22:02 2ch名人 【王座戦】居飛車対四間飛車の相穴熊戦に http://i2chmeijin.blog.fc2.com/blog-entry-6486.html 2017-07-28 10:00:00 NEWSまとめもりー|2chまとめブログ 【愕然】好きだった女と食事に行った結果wwwwwwwww http://www.akb48matomemory.com/archives/1066866462.html 2017-07-28 09:22:12 2ch名人 将棋連盟、千駄ヶ谷エレジーのCD販売断る http://i2chmeijin.blog.fc2.com/blog-entry-6485.html 2017-07-28 08:30:00 NEWSまとめもりー|2chまとめブログ 【北海道行方不明】美人中国女性「日本人はすごく親切」→ とんでもないことになる・・・ http://www.akb48matomemory.com/archives/1066866455.html 2017-07-28 08:22:03 NEWSまとめもりー|2chまとめブログ 【速報】巨大地震の前兆!!?大変なことが起きてる・・・ http://www.akb48matomemory.com/archives/1066866451.html 2017-07-28 07:22:14 NEWSまとめもりー|2chまとめブログ 新海誠監督『君の名は』パクリがバレて大炎上中wwwww(検証動画あり) http://www.akb48matomemory.com/archives/1066867470.html 2017-07-28 06:22:08 NEWSまとめもりー|2chまとめブログ 今井絵理子、週刊新潮の略奪不倫に意味深コメントwwwwwwww http://www.akb48matomemory.com/archives/1066867446.html 2017-07-28 05:22:42 NEWSまとめもりー|2chまとめブログ 琵琶湖線・瀬田駅の架線事故が怖すぎる…(動画あり) http://www.akb48matomemory.com/archives/1066861961.html 2017-07-28 04:22:29
このように「取得するサイトの順番」がぐちゃぐちゃにRSSフィードを取得しています。
「理想」
5回分だけ取得するという設定にした場合
サイトAから5件(5件未満しか情報が無かったら次のサイトBへ移動)
サイトBから5件(5件未満しか情報が無かったら次のサイトCへ移動)
サイトCから5件
という風に複数のRSSから指定した回数の分だけ取得する方法を調べたり、
色々試しているのですが上手くいきません。
mysqlへの登録も
重複するデータは登録しないという風な設定も出来て、
残りはこの「指定回数分だけ取得する」が分からないという状況です。
解決する為の方法をご存知の方がいらっしゃいましたら、
お力をお貸しいただけると嬉しいです。
回答1件
あなたの回答
tips
プレビュー