• 締切済み

magpierss mysqlに保存

magpierssを使って外部のrssを取得してmysqlに保存する場合、どのようにコードを書けばいいのでしょうか? また、その際にカテゴリ分けした上で複数のテーブルへ保存してカテゴリ別に表示できるようにしたいのですが、そのような事は可能ですか?

みんなの回答

noname#244856
noname#244856
回答No.1

PHP5には現在SimpleXMLという優秀なXMLパーサクラスが標準実装されているので、PHP4時代では使われていたであろうMagpieRSSを今使う意味はほとんどありません。 いきなり 「どのようにコードを書けばいいのでしょうか」 じゃなくて、もう少し手順を "日本語" で細分化して表してから、それをPHPのコードに書き換える作業をしていきましょう。もちろんセンスだけでガツガツコードを書ける人もいますが、全員がそうではありません。エディタを開いて何も書けずに茫然とする自分がいれば、まずは日本語を書くことからはじめましょう。 名言 https://twitter.com/usagee_jp/status/234455033708703744 といっても情報が全くないとキツいと思うので、ヒントをいくつか載せます。 【SimpleXML基本】 PHP Manual - 基本的なSimpleXMLの使用法 http://php.net/manual/ja/simplexml.examples-basic.php 【SimpleXML詳細】 PHP Manual - SimpleXML http://php.net/manual/ja/simplexml.examples-basic.php Mach3.laBlog - PHPでXMLの名前空間つきタグを読み込む色々 http://blog.mach3.jp/2010/12/14/various-xml-on-php.html Yahoo!知恵袋 - (PHP)各バージョンのRSS読み込みについて http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11116245626 【PDO基本】 PHP Book - PDOの利用 http://www.phpbook.jp/tutorial/pdo/ 【PDO詳細】 PHP Manual - PDO http://php.net/manual/ja/book.pdo.php PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MagpieRSSで特定のカテゴリを取得するには?

    MagpieRSSで特定のカテゴリを取得するには? よろしくお願い致します。 MagpieRSS(ver.0.61)を使用して、トップページにブログ( Movable Type [ver.4.27])の記事リスト(RSS2.0から読み込んで)を表示させています。 表題の通り、複数のカテゴリーの中から「カテゴリー hoge」の記事のみトップページに表示させるには、どのようなコードを加えれば良いのでしょうか? 現在は下記のようなコードでそれぞれの記事のカテゴリー名を取得して、記事リストに表示させております。 // カテゴリーの取得 $category = $item['category']; $category = mb_convert_encoding($category, "SJIS","auto"); ここで特定のカテゴリー名(hoge)の記事のみ取得するようにコードを変更すればよいのでは?と思ったのですが、肝心のコードがよく分からず質問させて頂きました。 お分かりになる方がいらっしゃいましたら、どうぞご教授下さいますようお願い致します。

    • ベストアンサー
    • PHP
  • MagpieRSSでアメブロ画像取得

    MagpieRSSを使用してアメブロのRSS情報を取得しようと思います。 コチラのサイトを参考にタイトルと日付は何とか取得出来ました。 http://blog.promob.jp/fri/2009/05/phprss.html あとはアメブロの画像をリサイズして表示させたいのと、 本文を文字数制限をして表示したいと考えております。 下記サイト辺りが近いのかなと思いますが どこをどういう風にすればいいのか初心者で全くわかりません。 http://www.anaveve.com/amamjaubb/innukusu.php?itemid=46 どうかお詳しい方ご教授お願い致します。 現在のコードはこんな感じです。 <?php // MagpieRSSの読み込み require_once('magpierss/rss_fetch.inc'); // エンコード指定 define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); // キャッシュ時間の設定 define('MAGPIE_CACHE_AGE', 60*5 ); // キャッシュ保存ディレクトリ指定 define('MAGPIE_CACFHE_DIR', 'cache/'); // 表示する件数の設定 $count = 5; // 表示する文字数の設定 $length = 50; // RSSのURLを指定する $url = 'http://blog.promob.jp/fri/atom.xml'; // RSSのデータを配列で取得 $rss = fetch_rss($url); // 表示する件数のデータ以外は削除 array_splice($rss->items, $count); // 取得したデータをリストで表示 $html .= "<ul>\n"; foreach ($rss->items as $item) { // リンクURL $href = $item['link']; // タイトル $title = mb_convert_encoding($item['title'],"SJIS","auto"); // 投稿日付 $date = date('Y/m/d H:i:s',parse_w3cdtf($item['published'])); $html .= "<li>\n"; $html .= "<font color=\"#ff0000\">(" . $date . ")</font>\n"; $html .= "<a href=$href>" . $title . "</a><br>\n"; } $html .= "</ul>"; // htmlの表示 echo($html); ?> どうか宜しくお願い致します!

    • ベストアンサー
    • PHP
  • MagpieRSSを使用して自分のHPにxmlを表示させる方法

    お世話になります。 データベースよりxmlを生成し、自分のHPに1ページに埋め込みたいと思っています。 いろいろなサイトを参考に、MagpieRSSを使用して表示させたいのですが、コードのサンプルに記載されている他サイトのRSS・xmlは表示できるのですが、ローカルのxmlは下記のエラーが出てしまい表示できません。 Warning: MagpieRSS: Failed to parse RSS file. (not well-formed (invalid token) at line 9, column 21) in /aaa/rss/rss_fetch.inc on line 238 変更した部分は、表示するxmlのURLのみです。 使用しているphpのバージョンは4.34、MagpieRSSのバージョンは0.72です。 問題のrss.phpのソース↓ <?php require_once 'rss_fetch.inc'; define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); $url = 'http://www.aaa.com/rss.xml'; $rss = fetch_rss($url); if ($rss && !$rss->ERROR) { drawRSS($rss); }else{ echo "取得できませんでした。"; } function drawRSS($rss){ $items = array_slice($rss->items, 0, 10); echo "<ul>\n"; foreach ($items as $item ) { $title = $item[title]; $title = mb_convert_encoding($title, "UTF-8", "auto"); $url = $item[link]; $description = $item[description]; $description = mb_convert_encoding($description, "UTF-8", "auto"); echo "<li><a href=\"$url\">$title</a></li>\n$description"; } echo "</ul>\n"; } ?> 何か、対処方法をご存知の方教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • XML
  • Mysqlにデータを入れる方法が知りたい

    テーブル接続→テーブル作成(必要か不明)→RSSをまとめる→RSSを取得→RSSをテーブルに入れる→RSSを表示するをPHPで作成しているのですが、RSSをテーブルに入れる段階でつまずいています。 テーブルに入れる方法を調べたところIncsert文が出てきたのですが、それ以外の方法を勉強の為に知りたいです。 その他の構文で取得データをMy SQLに入れる方法はありますでしょうか?

    • ベストアンサー
    • PHP
  • RSSをMYSQLに入れる最適なコードがわからない

    テーブル接続→テーブル作成(必要か不明)→RSSをまとめる→RSSを取得→RSSをテーブルに入れる→RSSを表示をPHPで作成しているのですが、 RSSをテーブルに入れる最適なコードがわからず困っております。 insertを使用してRSSをテーブルに入れたいのですが、INSERT INTOはphpにいきなり書いてもエラーにならないのでしょうか?$を使用するほうの記載のほうが正しいのでしょうか? <?php require_once(dirname(dirname(dirname(dirname( __FILE__ )))) . '/wp-load.php' ); //ファイルの先頭で読み込む try { $dsn = 'mysql:dbname=ozvutmpq_wp1;host=localhost'; $user = 'ozvutmpq_wp1'; $password = 'Rn_&Zi$gWKae'; $dbh = new PDO($dsn,$user,$pass); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる echo "データベースへの接続が出来ました"; }catch (PDOException $e) { echo $e->getMessage();// err時はメッセージを表示 exit; } //RSSをまとめる $url1 = [ 'http://', 'http://', 'http://',];//フィード登録1次元配列に foreach ($url1 as $url) { //複数のRSSを読み込むには?A.RSSのURLを配列に入れ、その配列をsimplexmlの引数にします。 $count = 0;//初期のカウント //RSSを取得 $rss = simplexml_load_file("$url"); // simplexml_load_file()でRSSをパース解析してオブジェクトを取得します。 $site_title = $rss->channel->title; // RSSタイトル取得 値の代入 自作関数 $post_thumbnail= $rss->channel->thumb; // RSSサムネイル画像取得 値の代入 自作関数 foreach ($rss->item as $item) { // この内側で $item を参照する if ($count >= 8) { break;//8件を超えたとき取得を終了する } $count++; $title = $item->title; // タイトル $link = $item->link; // リンク $thumb = $item->thumb->url; // アイキャッチサムネイル $content = $item ->description;// 詳細、必要なのか不明 date_default_timezone_set("Asia/Tokyo");//日時、タイトルとサムネイル画像だけほしいので要らない気がする $dc = $item ->children('http://purl.org/dc/elements/1.1/');//RSSの情報をPHPで取得するとき、[simplexml_load_file()]関数を使いますが、読み込むファイルの形式が[RSS 1.0]の場合、特殊な処理を施してあげないと正確に取得・表示することができません。 $day = date('Y/m/d H:i',strtotime($dc -> date));// RSS日付け取得 値の代入 自作関数 RSS1.0を取得したい場合「dc」の名前空間は「xmlns:dc="http://purl.org/dc/elements/1.1/"」 と定義されているので、これを引数として指定します。 $key = date('YmdGHis', strtotime($dc -> date));//DB等に入れやすい書式に変換 } } //RSSをテーブルに入れる INSERT INTO rssfeed (title, link, thumb,content)//テーブル名 VALUES ($title, $link,$thumb,$content now()) ON DUPLICATE KEY UPDATE up_date = now(); //名前を独自につける $item_insert_sql = "INSERT INTO $db_database.`rssfeed`(title, link, thumb, content) VALUES ('" . $title . "', '" . $link . "', '" . $thumb . "', '" . $content . "')";//mysql_queryとしてまとめてコードとして使うため?

    • ベストアンサー
    • MySQL
  • PHPパーサー MagpieRSSについて

    PHPパーサーのMagpieRSSを使用しています。 読み込むxmlが更新されてもそれが反映されません。 また、htmlとして書き出す際に<p>タグにid名を付けたいのですが、idをつけるとエラーがでます。これはPHPでは文法的にまずいんでしょうか?下記が使用しているソースです。 重ねて質問なんですが、下記のソースでは1つのxmlしか読み込んでいませんが、複数のxmlを読み込むにはどうしたらいいのでしょうか。 よろしくお願いします。 <?php require_once 'rss_fetch.inc'; require_once 'rss_utils.inc'; $url = 'http://www.xxxxx/xxxxxx/index.xml'; $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); $rss->items = array_slice($rss->items, 0, 1); foreach ($rss->items as $item ) { $description = $item[description]; $description = mb_convert_encoding($description, "UTF-8", "auto"); $url = $item[link]; $date = date("Y.m.d", $item['date_timestamp']); echo "$description?n"; } ?>

    • ベストアンサー
    • PHP
  • RSSで特定のカテゴリを取得する方法

    今までブログを書いていて、今はHPを作っています。 ブログには様々なジャンルの記事を書いていますが、 HPは特定のジャンルに対して作る予定です。 そこで今までブログに書いた記事をHPにRSSでフィードして載せようと考えていますが、 MagpieRSSを使って最新記事を無事に取得はできましたが、 特定のカテゴリの記事のみの取得はできないでしょうか? ネット上のプログラムを参考にして、 --------------------------- require_once 'rss_fetch.inc'; $url = '取得したいサイトのURL'; $rss = fetch_rss($url); $title = $rss->channel['title']; --------------------------- どこにもカテゴリ取得のコマンドがないのですが、そもそもできないものでしょうか? MagpieRSSじゃなくても、できる方法があれば紹介していただければと思います。 よろしくおねがいします。

    • 締切済み
    • PHP
  • MagpieRSSを使ってrss取得の際の表示件数

    MagpieRSSを使ってrssを取得したく下記のphpを作成しました。 <?php define('MAGPIE_OUTPUT_ENCODING','UTF-8'); require_once('rss_fetch.inc'); $url="xxxx.rdf"; $rss = fetch_rss($url); foreach($rss->items as $item){ foreach($item[dc] as $key => $daytime){ if($key == "date"){ $rssdate = strtotime("$daytime"); $today = strtotime(date("Y/m/d H:i")); } if($rssdate > $today){ print("$item[title]"); } } } ?> 過去から未来の予定が書いてあるRSS(rdf)があり、 現在の時間のデータを取得して、未来の予定のを表示したいです。 現在、print("$item[title]");で未来の予定がズラっと取得できる状態です。 そして、ここからが問題なのですが、 ここ(print("$item[title]");)の表示を最新の1件にしたいのですが、どうしてもうまくいきません。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • RSSデータをMySQLに格納・保存するには?

    RSSデータを利用したサイトを制作したいです。 例えば以下のようなサイトです。 ​http://feed.designlinkdatabase.net/​ ​http://affiliate.thumbnailcloud.net/​ ​http://a.guideme.jp/bookmark.php​ 特定のRSSフィードを読み込んで、データベースに格納し、定期的に収集し、それをサイトに表示させるというものです。 この場合、取得したRSSをMySQLにどのように収集し格納すればいいのでしょうか?  また、この場合のロジックと必要な技術などを教えてください。 勉強をしながら制作したいと思っていますので、 お勧めな書籍なども宜しくお願いします。

    • ベストアンサー
    • MySQL
  • MySQL接続について

    今、あるシステムを構築中なのですがCSVデータをデータベースにインポートする際にチェック後エラーとなったものをエラーリストとしてCSVに吐き出しています。このエラーリストを取込、データ修正作業を行うのですが、その際一時テーブルを作成してエラーリストをインポートしたうえで修正作業をしたいと思っています。 ただ、レコード数が多いので複数ページにまたがって修正するようになるのですが、一時テーブルはMySQLとの接続が切れると消えてしまうらしいのです。 この場合、ページを表示した時点でスクリプトは一度終了しているので、テーブルが消えるものだと思っています。 これを指定するまで一時テーブルを維持する方法はあるのでしょうか?mysql_pconnect()という関数なら永続的にできると書いているのですが、これでしょうか? この場合、切断したい場合はどうすればいいのでしょうか? 言語はPHPで構築しています。 説明が分かりにくいでしょうが、宜しくお願いします。

    • 締切済み
    • PHP