fputcsv関数でURL内の情報をCSV化
下記のようなページがあります。
【kabu.php】
<html>
I101,日経平均,19000<BR>
I102,TOPIX,1561<BR>
I104,東証2部指数,4653<BR>
</html>
上記をCSVファイルに吐き出そうと思い、下記のようなPHPを組みました。
欲しい結果=下記のような3行3列カラムとして書き込み(A1からC3)
「I101」「日経平均」「19000」
「I102」「TOPIX」「1561」
「I104」「東証2部指数」「4653」
【kabu_put.php】
<?PHP
$list = file_get_html( 'http://hoge.jp/kabu.php' );
$fp = fopen('kabu.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>
実際の結果
カラムが下記のように横一列に書き込まれる(A1からF1)。カンマ切りは認識しないかつ改行できない
「I101,日経平均,19000」「<BR>」「I102,TOPIX,1561」「<BR>」「I104,東証2部指数,4653」「BR」
次に、kabu.phpの改行部分を<BR>ではなく、\n または \r\n としてみました。
http://hoge.jp/kabu.php
<html>
I101,日経平均,19000\r\n
I102,TOPIX,1561\r\n
I104,東証2部指数,4653\r\n
</html>
【kabu_put.php】は変わらずです。
<?PHP
$list = file_get_html( 'http://hoge.jp/kabu.php' );
$fp = fopen('kabu.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>
結果
下記のように1つめのカラム(A1)に全てが書き込まれる。(\nも\r\nも同様)
(改行コードは1スペース化されてしまった。カンマ区切りも認識できない)
「I101,日経平均,19000 I102,TOPIX,1561 I104,東証2部指数,4653 」
【質問】
下記のような3行3列カラムとして書き込みとするためには、どうすればいいでしょうか?
「I101」「日経平均」「19000」
「I102」「TOPIX」「1561」
「I104」「東証2部指数」「4653」
尚、kabu.phpは下記のようなスクレイピングで作っています。
kabu_base.php というリンクサイトがあって、そこでは「URLに株ID」が、「テキスト文字に株名と現在価格がカンマ区切りで記載」されています。
このリンクURLを「URL部分(株価ID)」と「文字部分(株名),株価(数値)」に分解して作成し、株価IDと株名の間にカンマを挿入したのが下記のkabu.phpです。
【質問への補足(依頼)】
kabu.phpの中に直接下記のプログラムを記載することで解決できるのであれば、それでも構いません。
$fp = fopen('kabu.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
【kabu.php】
<?php
require_once('simplehtmldom/simple_html_dom.php');
$html2 = file_get_html( 'kabu_base.php' );
foreach($html2->find('a') as $element2){
echo $element2->href;
echo ",";
echo $element2->innertext;
echo "\r\n";
}
?>
よろしくお願いいたします。
お礼
早速ありがとうございました。こちらで大丈夫です!