我正在通過(guò) PHP 生成和導(dǎo)出 CSV,經(jīng)過(guò)我的團(tuán)隊(duì)的一些修改,現(xiàn)在結(jié)果是在列內(nèi)生成了雙引號(hào)。我通過(guò)使用 CakePHP 控制臺(tái)執(zhí)行此 Shell 腳本,通過(guò)我的終端生成它。/var/www/mysite.new/trunk/app/Console/cake Csv mysite.uk問(wèn)題是我已經(jīng)嘗試了很多技術(shù)來(lái)剝離它們,例如:stripslashes(), str_replace(), trim()在我最后的修改中,我嘗試應(yīng)用 str_replace 函數(shù)。 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 */ }然而,它只發(fā)生在姓氏和名字中有一個(gè)以上的單詞,其中正在生成引號(hào)。一個(gè)字組成的姓氏和名字,看起來(lái)還可以。不過(guò),名稱中可能存在一些異常,其中包含空格,因此會(huì)再次生成雙引號(hào)。我不太清楚為什么會(huì)這樣。我可以附上兩個(gè)屏幕截圖,以便您更好地了解問(wèn)題。如果您知道它可能是什么,那將非常感激。這是我生成 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貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
而不是使用fputcsv
,嘗試implode
。
更新 1:您必須確保您的價(jià)值不包含, (comma)
更新 2:如果您擔(dān)心引用的文本會(huì)成為您的 CSV 數(shù)據(jù)表的問(wèn)題,那么您需要知道 CSV 的設(shè)計(jì)目的是為了在值之間有任何空格。所以你不必?fù)?dān)心。任何 CSV 解析器都會(huì)正確理解引用的值。
- 1 回答
- 0 關(guān)注
- 156 瀏覽
添加回答
舉報(bào)
0/150
提交
取消