Curl Zip文件和提取数据php

时间:2017-06-25 02:08:48

标签: php csv curl zip

我能够检索文件并期待CSV,但它是一个zip文件。我有办法取下拉链,我可以快速检索并取出CSV吗?如果是这样的话?如果不是最好的方法是什么?我搜索并找到了一个6岁的主题,现在回复。

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);}

1 个答案:

答案 0 :(得分: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

这取决于你是否只想要一个文件,在那里,它总是以相同的方式命名,或者你必须处理多个文件,这些我无法回答。

$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