我正在使用php從數據庫中下載表並將其保存爲.csv文件。但是當其中一個列在字符串中包含逗號「,」時,腳本會將字符串的其餘部分(逗號後面)帶到新列中。我怎樣才能讓腳本忽略這個逗號?csv不會忽略','(逗號),並使用php創建一個新的行
我試過在旁邊放一個'\'或使用stripcslashes(),但沒有任何效果。
部分代碼的
$rows = mysqli_fetch_assoc($select_table);
if ($rows)
{
getcsv(array_keys($rows));
}
while($rows)
{
getcsv($rows);
$rows = mysqli_fetch_assoc($select_table);
}
// get total number of fields present in the database
function getcsv($no_of_field_names){
$separate = '';
// do the action for all field names as field name
foreach ($no_of_field_names as $field_name)
{
if (preg_match('/\\r|\\n|,|"/', $field_name))
{
$field_name = '' . str_replace(',','!', $field_name) . '';
}
echo str_replace('!',',', $field_name) . $separate . $field_name;
//sepearte with the comma
$separate = ',';
}
//make new row and line
echo "\r\n";
}
?>
編輯:
如果我不使用逗號,然後CSV文件將無法正常在Excel加載(逐列,行通過行)。
在任何人開始說你爲什麼要這樣做,而我正在做它的實踐。
你爲什麼要寫出你自己的CSV解析器?改用[fputcsv](http://php.net/manual/en/function.fputcsv.php)。該頁面的第一條評論是關於將其寫入瀏覽器的。這將創建一個格式正確的CSV字符串。 – aynber
練習的人!實踐!!!! – noel293
heh。好的,我會給你的。那麼你想要做的是,如果該值包含逗號,請在該值附近加引號。這將告訴任何CSV解析器,該字符串內部的字符串不應該被分割,直到它碰到下一個引號。 – aynber