我正在通過 PHP 生成和導出 CSV,經過我的團隊的一些修改,現在結果是在列內生成了雙引號。我通過使用 CakePHP 控制臺執行此 Shell 腳本,通過我的終端生成它。/var/www/mysite.new/trunk/app/Console/cake Csv mysite.uk問題是我已經嘗試了很多技術來剝離它們,例如:stripslashes(), str_replace(), trim()在我最后的修改中,我嘗試應用 str_replace 函數。 foreach ($persons_csv as $person_csv){ /* The part where I get the data for stripping off the quotation marks */ $mail = $person_csv['Person']['email']; $name = str_replace('"', '', $person_csv['Person']['name']); $surname = str_replace('"', '', $person_csv['Person']['surname']); /* REST OF THE CODE */ }然而,它只發生在姓氏和名字中有一個以上的單詞,其中正在生成引號。一個字組成的姓氏和名字,看起來還可以。不過,名稱中可能存在一些異常,其中包含空格,因此會再次生成雙引號。我不太清楚為什么會這樣。我可以附上兩個屏幕截圖,以便您更好地了解問題。如果您知道它可能是什么,那將非常感激。這是我生成 CSV 的其余代碼。 private function addRow($row) { $rows_deleted = 0; if (!empty($row)){ fputcsv($this->buffer, $row, $this->delimiter, $this->enclosure); } else { return false; } } private function renderHeaders() { header("Content-type:application/vnd.ms-excel"); header("Content-disposition:attachment;filename=" . $this->filename); } private function setFilename($filename) { $this->filename = $filename; if (strtolower(substr($this->filename, -4)) != '.csv') { $this->filename .= '.csv'; } } private function render($filename = true, $to_encoding = null, $from_encoding = "auto") { if(PAIS) { if ($filename) { if (is_string($filename)) { $this->setFilename($filename); } $this->renderHeaders(); } rewind($this->buffer); $output = stream_get_contents($this->buffer); }}
1 回答

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
而不是使用fputcsv
,嘗試implode
。
更新 1:您必須確保您的價值不包含, (comma)
更新 2:如果您擔心引用的文本會成為您的 CSV 數據表的問題,那么您需要知道 CSV 的設計目的是為了在值之間有任何空格。所以你不必擔心。任何 CSV 解析器都會正確理解引用的值。
- 1 回答
- 0 關注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消