2017-06-25 12 views
0

ファイルを取得することができ、CSVが必要ですが、代わりにZIPファイルです。私はそこにジッパーを取る方法を取得して、その場でCSVを取得していますか?もしそうなら、どのように?最高の方法は何ですか?私は検索し、現在の応答と古い6歳のトピックを発見した。簡単な例についてはCurl Zipファイルとデータを抽出する

function get_data_zip($url){ 
//echo $url;exit; 
    $ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_ENCODING, ""); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 


$headers = array(); 
$headers[] = "Content-Type: application/json"; 
$headers[] = "X-App-Key: xxx"; 
$headers[] = "X-User-Key: yyy"; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

$result = curl_exec($ch); 
if (curl_errno($ch)) { 
    echo 'Error:' . curl_error($ch); 
} 
curl_close ($ch);} 
+0

はい - google it。 http://php.net/manual/en/zip.examples.php – ArtisticPhoenix

+0

メモリでやり遂げることができれば答えることはできませんでしたが、私はそれに向けて作業しています。ありがとう@ArtisticPhoenix! – Dan

+0

あなたは、zipを開いてファイルを見つけて、ストリーム出力ラッパーを使用する必要があります。 '$ Zip-> getStream( 'file')' http://php.net/manual/en/ziparchive.getstream.phpこれは 'fopen'のようにファイルハンドルを与えます。 – ArtisticPhoenix

答えて

0

$z = new ZipArchive(); 
if ($z->open('test.zip')) { 
    $fp = $z->getStream('test'); 
    if(!$fp) exit("failed\n"); 

    while (!feof($fp)) { 
     $csv = fgetcsv($fp); 
     var_dump($csv); 
    } 
} 

http://php.net/manual/en/ziparchive.getstream.php

あなたはZIPフォルダ

for ($i = 0; $i < $z->numFiles; $i++) { 
    $name = $z->getNameIndex($i); 
    // ... 
} 

http://php.net/manual/en/ziparchive.getnameindex.php内のファイルの名前を取得するには、このようなものを使用する必要があります。

それはあなたが1つのファイルだけを期待していても、同じ方法で名前が付けられているか、処理しなければならない複数のファイルがあるかどうかによって決まります。

$z = new ZipArchive(); 
if ($z->open('test.zip')) { 
    for ($i = 0; $i < $z->numFiles; $i++) { 
     $name = $z->getNameIndex($i); 
     $fp = $z->getStream($name); 
     if(!$fp) exit("failed on $name\n"); 

     while (!feof($fp)) { 
      $csv = fgetcsv($fp); 
      //.. do some other stuff (save in DB etc.) 
      var_dump($csv); 
     }//end while not end of file 
    }//end for files 
}//end open zip 
+0

コードの最後のビットは、あなたの忍耐と助けを借りて、もう一度感謝しました@ArtisticPhoenix – Dan

関連する問題