如何将数组写入csv文件?

时间:2020-01-24 13:19:13

标签: php curl

我生成一个包含多个变量的数组,并希望将其完全写到一个csv文件中。标头正常工作,但仅从数组中将/ \ n /“(,写到csv中。

如果在 echo 之前使用implode,则会出现空白行。 怎么了?这是到目前为止我正在使用的代码:

<?php

    function scrape_between($data, $start, $end){
        $data = stristr($data, $start); 
        $data = substr($data, strlen($start)); 
        $stop = stripos($data, $end); 
        $data = substr($data, 0, $stop); 
        return $data; 
    }

    function curl($url) {

        $options = Array(
            CURLOPT_RETURNTRANSFER => TRUE, 
            CURLOPT_FOLLOWLOCATION => TRUE,
            CURLOPT_AUTOREFERER => TRUE,
            CURLOPT_CONNECTTIMEOUT => 120,
            CURLOPT_TIMEOUT => 120,
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_USERAGENT => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2pre) Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8",  // Setting the useragent
            CURLOPT_URL => $url, 
        );

        $ch = curl_init(); 
        curl_setopt_array($ch, $options); 
        $data = curl_exec($ch);
        curl_close($ch);   
        return $data; 
    };

    $header = 'date1,date2,contractcode,exchange,region,commoditycode,openint,noncomlong,noncomshort,noncomspread,comlong,comshort,';
    echo($header);

    $scraped_page = curl("https://www.cftc.gov/dea/newcot/deafut.txt");   
    $scraped_wheat = scrape_between($scraped_page, "WHEAT-SRW - CHICAGO BOARD OF TRADE", "CONTRACTS");
    $scraped_wheat = preg_replace('/",/', '', $scraped_wheat); 
    $pieces = explode('WHEAT', $scraped_wheat);  
    $items = explode(",",$pieces[0]); 
    $tmp = 0;
    foreach ($items as $value)if ($tmp++ < 12) {
    $value = preg_replace('/\s/', '', $value);
    echo ($value.",");

    };
    $file = 'cot-zw.csv';
    file_put_contents($file, $header.'/\n/'.$value.",");

?>  

非常感谢您的帮助!

编辑

通过fputcsv的建议会产生一个空的csv文件。那就是我尝试过的(失败了):

    $scraped_wheat = scrape_between($scraped_page, "WHEAT-SRW - CHICAGO BOARD OF TRADE", "CONTRACTS");
    $scraped_wheat = preg_replace('/",/', '', $scraped_wheat);  // ", am Anfang entfernen
    $pieces = explode('WHEAT', $scraped_wheat);  // explode() Teilt die Zeichenkette
    $items = explode(",",$pieces[0]); // Definition des , als Teiler
    $tmp = 0;
    foreach ($items as $value)if ($tmp++ < 12) {
    $value = preg_replace('/\s/', '', $value);
    echo ($value.",");    
    $fp = fopen('cot-zw.csv', 'w');
    foreach($value as $line){
             $val = explode(",",$line);
             fputcsv($fp, $val);
    }
    fclose($fp);   
    };```

1 个答案:

答案 0 :(得分:1)

Sub slidesizes() Dim L As Long Dim originPres As Presentation Dim tempPres As Presentation Set originPres = ActivePresentation originPres.SaveCopyAs (Environ("TEMP") & "\temppres.pptx") On Error Resume Next MkDir (Environ("USERPROFILE") & "\Desktop\slides\") Set tempPres = Presentations.Open(FileName:=Environ("TEMP") & "\temppres.pptx", WithWindow:=False) For L = originPres.Slides.Count To 1 Step -1 originPres.Slides(L).Copy tempPres.Slides.Paste Call tempPres.SaveAs(FileName:=Environ("USERPROFILE") & "\Desktop\slides\slide" & L & ".pptx", EmbedTrueTypeFonts:=False) tempPres.Slides(1).Delete Next tempPres.Close End Sub 是写csv的一种非常粗糙的方式。

我建议使用file_put_contents()。这是一个非常简单的示例:

fputcsv()

https://www.php.net/manual/en/function.fputcsv.php