簡體   English   中英

使用 fputcsv 時避免 csv 文件中的默認引號

[英]Avoid default quotes from csv file when using fputcsv

使用 fputcsv 避免來自 csv 的默認引號

fputcsv($fp, $array, ',', '"'); // OR fputcsv($fp, $array);

在測試.csv

testname,045645765789,"""04.07.2012 12:10:52"""

如何在這里避免上面的引號?

像下面一樣

testname,045645765789,04.07.2012 12:10:52

兩個雙引號用於轉義雙引號,所以看起來你的日期/時間已經被引用了。 如果您只想獲得正確引用的 CSV,您可以嘗試刪除任何現有的雙引號(這可能有點蠻力):

$array = array('testname',045645765789,'"04.07.2012 12:10:52"');
$array = str_replace('"', '', $array);

fputcsv($fp, $array);

// Output: testname,79323055,"04.07.2012 12:10:52"

fputcsv想要在一個帶有空格的字符串周圍放置一些東西,所以如果你根本不想使用引號,你要么需要變通,要么創建你自己的函數來做你想做的事。 這個問題下有很多好的解決方案(編輯:這是一個不同的鏈接)。 或者,在PHP 手冊的注釋中有許多其他解決方案。

基於第一個鏈接,您可以執行以下操作:

$array = array('testname',045645765789,'"04.07.2012 12:10:52"');
$array = str_replace('"', '', $array);

fputs($fp, implode(',', $array)."\n");

// Output: testname,79323055,04.07.2012 12:10:52 

我知道這是一個老問題,但我有一個類似的問題,最終放棄了fputcsv並只是用正確的標題echo顯它以告訴瀏覽器下載文件。 我知道這並沒有專門解決fputcsv的問題,但考慮到我花在它上面的時間,並意識到沒有解決空間問題的方法(如果可能的話,可能比問題應得的工作更多) ,我選擇了最簡單的解決方案。 如果目標是創建一個動態的、可下載的 CSV 文件,那么下面的代碼可以非常輕松靈活地完成任務。 我的問題是我需要按照我正在使用的服務的要求將所有字段用雙引號引起來。 但是有些字段有空格,這意味着fputcsv會自動添加單引號(或雙引號),這意味着我得到了像"'this is a value'" 無論我嘗試什么,它都不會正確輸出數據。 所以這解決了它(但是,它不使用fputcsv但我認為沒有必要,因為結果是一樣的):

$filename="my_file.csv";
header("Content-Type: text/csv; charset=utf-8");
header("Content-Disposition: attachment; filename=$filename");

for ($i=0; $i<=10; $i++) {
    $value1 = "Here is some value";
    $value2 = "Here is another value";
    $value3 = "Another value";

    echo $value1 . ",";
    echo $value2 . ",";
    echo $value3;
    if ($i != 10) echo "\n"; //only add new line if it's not the last line
}

如果需要,您也可以選擇將值用雙引號引起來,就像我通過執行以下操作所做的那樣:

for ($i=0; $i<=10; $i++) {
    $value1 = "Here is some value";
    $value2 = "Here is another value";
    $value3 = "Another value";

    echo '"'. $value1 . "\",";
    echo '"'. $value2 . "\",";
    echo '"'. $value3 . "\"";
    if ($i != 10) echo "\n"; //only add new line if it's not the last line
}

如果有人遇到這個特殊的格式問題,希望這可以節省他們的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM