2016-08-19 4 views
1

と間違えている:そうCSVインポートエラー、私はページのこすりを行い、CSVファイルにアイテムのコレクションを入れしようとしています次の列

Array 
     (
      [title] => Ayrshire Brewers Ltd 
      [url] => http://www.quaffale.org.uk/php/brewery/982 
      [metadata] => (Stevenston, Ayrshire and Arran 1981-1982) 
      [start] => 1981 
      [end] => 1982 
     ) 

^項目ですこのように見える。 ---カンマ区切り記号がメタデータのコンマでマックアップされた場合、結果はCSVに入れてもうまくいかなくなります。 - データ内のすべてのカンマを消去すると、スムーズにインポートされますが、確かにそれはできません。どうすればコンマの内容をエスケープできますか?私はcsvのインポート中に変数の周りに引用符を入れてみましたが、それはエラーで戻ってきます。

function makeCSV($filename, $ret){ 

     $list = array(); 

     //if array is not empty 
     if(key_exists(0, $ret)){ 

      $keylist = array_keys($ret[0]); 
      foreach ($keylist as $key => $value){ 
       $list[] = $value; 
      } 
      $implode = implode(",",$list); 

      $list = array($implode); 

      //put into csv 
      foreach($ret as $x => $x_value) { 
       $list[] = implode(",",$x_value); 
      } 
     } 



     $file = fopen($filename.".csv","w"); 
     foreach ($list as $line){ 
      fputcsv($file,explode(',',$line)); 
     } 

     fclose($file);  
    } 
+0

は、リンクをありがとう - ドキュメントに表示されません - あなたは多次元配列のキー付きのリファクタリングの解決策を持っている場合は、コード –

+0

の正確な補正とソリューションを実証することができています - このコンマの問題を解決します。 –

+0

もし私がこれを2倍にすることができたら、私はそうするでしょう。ドキュメントを読んで自分でやりたいときに、誰かにあなたのコードを "訂正"するように依頼するのはなぜですか? –

答えて

1

働いていた答えは - 、コード内の他のバグを解決したHTMLをクリーンアップし、必要に応じて適切な場所にギャップ列を追加した後。

function makeCSV2($filename, $list){ 
     //header 
     $heads = array("title", "brewurl", "metadata", "start", "end", "Address", "lat", "lng", "County (see footnote)", "Phone", "Mobile", "Web", "weburl", "facebook", "twitter", "e-mail", "emailaddress", "History", "Beers Brewed", "Regular Outlets", "Visit Information", "Brewery Shop Information", "postcode"); 

     array_unshift($list, $heads);//adds the header to the top of the array 

     $fp = fopen($filename.".csv","w"); 

     foreach ($list as $fields){ 
      fputcsv($fp, $fields); 
     } 
     fclose($fp); 
    } 
+1

@halfer - ソリューションが見つかりました –

+0

OK、素晴らしい - それを投稿していただきありがとうございます。 – halfer

+1

__これで正しくインポートされました - それは擦り傷の間に隙間があったのを助けませんでした - 一部のページに "モバイル"がないように - そういうことを確認して空の "coloumns"を追加しなければなりませんでした話す。 –

関連する問題