- ベストアンサー
fputcsv関数でURL内の情報をCSV化
- fputcsv関数を使用してURL内の情報をCSVファイルに書き込む方法についての質問です。
- 質問者は、kabu.phpというページから取得した情報を3行3列のカラムとしてCSVに出力したいと考えています。
- 現在の実装では、カンマや改行に問題があり、望む結果が得られないため、解決方法を求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> 尚、kabu.phpは下記のようなスクレイピングで作っています。 すいません、ここから先読み落としてました… <?php require_once 'simplehtmldom/simple_html_dom.php'; $fp = fopen('kabu.csv', 'w'); $html = file_get_html('kabu_base.php'); foreach ($html->find('a') as $e) { fputcsv($fp, explode(',', "$e->href,$e->innertext")); } これだけじゃないですかね。
その他の回答 (1)
>> 下記のようなページがあります。 Simple HTML DOM Parser を使う時点でミスリーディングな気がします。勘違いされているかもしれませんが、CSVはただの「Comma-Separatd Values」の名前の通り、コンマで値が区切られているだけのファイルなので、Excelのことは一切関係ありません。HTMLちょっと加工しちゃえばすぐCSV形式として有効になることは明白ですよね。 # ちなみに使うにしてもPHPネイティブのDOMDocumentのほうがいいですね。 # XPathも使えるし依存ライブラリ一切無しで使えるし動作速度速いし… # http://qiita.com/mpyw/items/c0312271819baee09132 >> 次に、kabu.phpの改行部分を<BR>ではなく、\n または \r\n としてみました。 もとのページを書き換えられるんですか?kabu.php側でCSV形式になりうるデータを既に持っているんじゃないんですかね?わざわざ一度HTMLとしては吐かせる必要性に疑問を感じます。 一応提示されたHTMLはこんな感じでCSVに簡単に変換できます。 $html = file_get_contents('http://example.com/example.php'); $csv = implode("\n", array_filter(array_map('trim', preg_split('@<[^>]*+>@', $html)), 'strlen')); file_put_contents('kabu.csv', $csv); http://ideone.com/ZcE7cN
お礼
ありがとうございます。 出来ました!! 深く御礼申し上げます。