我生成一个包含多个变量的数组,并希望将其完全写到一个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);
};```
答案 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()