• 締切済み

PHPで外部ファイルから取り込んだデータを配列に

外部ファイルから取り込んだデータを、配列に代入したいと考えています。自分で試したのですが、どうしてもうまくいかないので詳しい方、どうかよろしくお願いします。 外部のdatファイルは3項目をカンマ区切りで記述してあり、その3項目の繰り返しになっています。そこで次のスクリプトを実行すると、echo結果は$aの列挙になります。 <?php //ファイル名 $file_name = "ファイルのURL/××.dat"; //ファイルを読み取りモードで開く $file = fopen($file_name, "r") or die("OPENエラー"); //ファイルをロックする flock($file, LOCK_SH); //出力 while (!feof($file)){ $string = fgets($file,1000); list($a, $b, $c , $d) = explode(",", $string); $d="$a".","; echo "$d"; } //ロックを開放する flock($file, LOCK_UN); //ファイルを閉じる fclose($file); ?> じつは、この$aの内容が、RSSフィードのURLになっており、次のスクリプトでRSSの更新情報を書き出すのですが、$dの中のカンマ区切りのデータを、次のスクリプトの●●●部分に取り込みたいのですが、どう記述すればよいのかわかりません。 <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed(array( ●●● 'URL1', 'URL2', 'URL3' )); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(100); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?> <!--出力--> <ul style="height: 200px; margin: 10; padding: 0; overflow-y: scroll;"> <?php if ($maxitems == 0) echo '<li style="list-style: none;">No items.</li>>'; else foreach ( $rss_items as $item ) : ?> <li style="list-style: none; margin: 0; padding: 0;"><?php echo $item->get_date("Y-n-j"); ?> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a></li> <?php endforeach; ?> </ul> どうか、お知恵をお貸しください、よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

CSV形式なのにfgetcsv()を何故使わないの?

makomo_jp2
質問者

お礼

回答ありがとうございました。 >CSV形式なのにfgetcsv()を何故使わないの? ファイルの拡張子が.datでもcsvが使えるとは知りませんでした。 改めて質問ですが、外部ファイルは「サイト名,URL,RSS」と3つの要素をひとまとまりとしてカンマ区切りでつらつらつらなっています。 サイト名,URL,RSS,サイト名,URL,RSS,サイト名,URL,RSS・・・こんな感じです。 このうち「RSS」だけを配列に組み込みたいと思っています。 list($a, $b, $c) = explode(",", $string); でRSSを$cに代入してソレをさらに配列に組み込むのかなと考えたのですが、どうもよくわかりません。 ちなみに、下のRSSを組み込むスクリプトはワードプレスのサポートサイトで公開されていたもので、配列にそのままRSSフィードのURLを打ち込めば動作するのは確認できているのですが、手入力とファイルから取り込んだ変数を混在させたいと考えています。 どうかよろしくお願いします。

関連するQ&A

  • PHPのレイアウトを指定するCSSの書き方

    http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/fetch_feed 上記サイトのPHPを利用したいのですが、フォントや枠を指定するスタイルシートの書き方を教えて欲しいです。 これがPHPの構文です。 <h2><?php _e('Recent news from Some-Other Blog:'); ?></h2> <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed('http://example.com/rss/feed/goes/here'); if (!is_wp_error( $rss ) ) : $maxitems = $rss->get_item_quantity(5); $rss_items = $rss->get_items(0, $maxitems); endif; ?> <ul> <?php if ($maxitems == 0) echo '<li>No items.</li>'; else foreach ( $rss_items as $item ) : ?> <li> <a href='<?php echo $item->get_permalink(); ?>' title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'> <?php echo $item->get_title(); ?></a> </li> <?php endforeach; ?> </ul> スタイルシートで出てきたページの例文を、PHPの構文を挟むように記述してみたりしたのですが、真っ白になって表示できなくなったりしますし、フォント指定と枠指定の組み合わせ方もわかりません。 一からというと申し訳ないですが、どなたか例文を記述いただけると嬉しいです。 サンプルの修正からでしたら、間違えながらも自分がしたいように持っていけると思いますので・・・

    • ベストアンサー
    • PHP
  • [wordpress]外部RSSを「文字数制限」してリストで取得[php]

    初めまして。 wordpress、php初心者です。 タイトル通り、外部のRSSを自分のサイトで、 リスト表示させようと思っています。 ------------ <h1><?php _e('Headlines from Yahoo ITmedia News'); ?></h1> <?php // Get RSS Feed(s) include_once(ABSPATH . WPINC . '/rss.php'); $rss = fetch_rss('http://headlines.yahoo.co.jp/rss/itmedia_n.xml'); $maxitems = 5; $items = array_slice($rss->items, 0, $maxitems); ?> <ul> <?php if (empty($items)) echo '<li>No items</li>'; else foreach ( $items as $item ) : ?> <li><a href='<?php echo $item['link']; ?>' title='<?php echo $item['title']; ?>'> <?php echo $item['title']; ?> </a></li> <?php endforeach; ?> </ul> ------------ 上記のソースで表示はひとまずできました。 あと、これを文字数制限(たとえば10文字以上は「…」)で表示 としたいのですが、どうしたらいいのでしょうか? ------------ <?php $title= mb_substr($post->post_title,0,10); echo '<h1>'.$title.'…</h1>'; ?> ------------ 上記の「mb_substr(」を組み合わせればできそうなのですが、 理解不足な分、うまくいきません。 誰が、教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • WordpressのRSS取得条件

    以下のコードに2010年以降のフィードのみ表示させるようにするにはどうすればよいですか? <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed(array('RSSフィード')); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(10); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?> <dl> <?php if ($maxitems == 0) echo '<dt>No items.</dt>'; else foreach ( $rss_items as $item ) : ?> <dt> <?php echo $item->get_feed()->get_title(); ?><br /> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a> </dt><?php endforeach; ?></dl>

    • 締切済み
    • PHP
  • PHPスクリプトにスタイルシートを適用するには?

    MagpieRSS(http://magpierss.sourceforge.net/)で取得した以下のPHPスクリプトでRSSをリスト化してWEB表示させることができたのですが、これにスタイルシートを適用したい場合、どのような方法がありますか?PHP初心者なためぜんぜんわかりません。 <?php require_once 'rss_fetch.inc'; require_once 'code_table.ucs2jis'; require_once 'jcode.php'; $url = 'http://~; $rss = fetch_rss($url); $title = $rss->channel['title']; //JcodeConvert($str, $from, $to) //0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8 $title = JcodeConvert($title, 4, 2); foreach ($rss->items as $item ) { $title = $item[title]; $title = JcodeConvert($title, 4, 2); $url = $item[link]; echo "<li><a href=\"$url\">$title</a></li>\n"; } ?>

    • ベストアンサー
    • PHP
  • PHPにスタイル、CSS

    PHP初心者です。 下記のように、echoで書き出した<li>に、スタイルを付ける場合はどのようにすればいいのでしょうか? CSSに記述しましたが、うまくいきません。 <div id="main"> <?php $rss = simplexml_load_file("http://feedblog.ameba.jp/rss/ameblo/highball-k"); foreach ($rss->item as $item) { $dc = $item->children('http://purl.org/dc/elements/1.1/'); $link = $item->link; $title = $item->title; $date = $dc->date; $date = strtotime($date); $date = date('Y/m/d',$date); echo "<li>$date&nbsp;&nbsp;<a href=\"$link\">$title</a></li>\n"; } ?> <!-- / #main --></div>

    • ベストアンサー
    • PHP
  • YoutubeのRSSの読み込み、表示についての質問

    YoutubeのRSSの読み込み、表示についての質問 過去に似たようなものがありましたがかなり前のものなので新たに質問させていただきます。 現在WordpressMUを元にポータルサイト的なものをPHPの知識が殆ど無い状態で作っています。 機能の一つとして本体のTOPページにYoutubeの特定のタグの検索結果をRSSで読んで表示したいと思っているのですが 参考にさせて頂いたサイトのコードが <?php $rss = fetch_rss('rssをここに入力'); $maxitems = 1; $items = array_slice($rss->items, 0, $maxitems); if (empty($items)) echo 'No items'; else foreach ( $items as $item ) : ?> <a href="<?php echo $item['link']; ?>" title="<?php echo $item['title']; ?>" target="_blank"><?php echo $item['description']; ?></a> <?php endforeach; ?> となっておりまして、検索結果のRSSを入力すると、表示はされるのですが [description]のくくりなので余計な情報が入ってしまいます。 表示したいのはタイトルとサムネイルと時間くらいなので もっと細分化して読み込みたいのですが何かいい方法はございませんでしょうか? PHPが分かる方にとってはあまりに初歩的な質問かと思われますが どうかよろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP ブログの交信記録

    PHP初心者です。 下記のソースで一行目の$rss = simplexml_load_file( 以降にアドレスを入れて、ブログの更新情報を表示させたいのですが、うまくいきません。なぜでしょうか? <?php $rss = simplexml_load_file("http://d.hatena.ne.jp/xxxx/rss"); foreach ($rss->item as $item) { $dc = $item->children('http://purl.org/dc/elements/1.1/'); $link = $item->link; $title = $item->title; $date = $dc->date; $date = strtotime($date); $date = date('Y/m/d',$date); echo "<li>$date&nbsp;:&nbsp;<a href=\"$link\">$title</a></li>\n"; } ?>

    • 締切済み
    • PHP
  • MagpieRSSについて(PHPでRSSを取得、解析)

    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が使えるものです。 教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • simplexml_load_fileを使用してblogのRSSを読み

    simplexml_load_fileを使用してblogのRSSを読み込み、ページ内に表示させたいのですが 下記のスクリプトでは楽天とlivedoorのRSSの読み込みが出来ません。 色々検索してみたのですがこれといった解決法を発見できなかったので質問させていただきます。 どうぞよろしくお願いいたします。 <?php $xml = simplexml_load_file('RSSをここに入力'); $i = 0; foreach($xml->channel->item as $item) { if(++$i>5) break; $title = (string)$item->title ; $link = (string)$item->link ; echo ("<li><a href=".$link.">".$title."</a></li><br />"); } ?>

    • ベストアンサー
    • PHP
  • RSSのデータを読み取って更新情報を表示するPHP

    Yahooニュースの更新情報を表示するサイトを作りたいと思って とりあえずプログラムを作ってみたのですがうまくいきません。 初心者なのでどこが悪いのか何が足りないのかどうすればいいのか詳しく教えてください <?php //RSSデータの読み込み $rssurl = "http://dailynews.yahoo.co.jp/fc/rss.xml"; $rssdata = simplexml_load_file($rssurl); //変数の初期化 $a= ""; $b= ""; $c= ""; $d= ""; $e= ""; $f= ""; $g= ""; $h= ""; //それぞれの変数に代入 $a= "<li>"; $b= "<a href=\""; $c= link; $d= "\">"; $e= title; $f= "</a>\n"; $g= description; $h= "</li>"; //表示 echo "a"; echo "b"; echo "c"; echo "d"; echo "e"; echo "f"; echo "g"; echo "h"; ?>

    • 締切済み
    • PHP

専門家に質問してみよう