Rumah > Soal Jawab > teks badan
Saya mempunyai fail CSV templat yang mengandungi ruang letak seperti {$NAME}
Sekarang saya mahu menggantikan semua ruang letak ini dengan nilai sebenar.
Saya menggunakan Laravel, tetapi itu tidak penting.
Amalan semasa adalah seperti berikut:
$templateCSV = Storage::get('quote.intake.form.template.csv'); // 读取文件内容 $vars = [ // 定义占位符和实际值 '{$AGENT_NAME}' => $agent['name'], '{$AGENT_PHONE}' => $agent['phone'], ]; $newCSV = strtr($templateCSV, $vars); // 最后替换这些占位符。 Storage::put("my-new-csv.csv", $newCSV); // 保存新的CSV文件
Ini berfungsi, tetapi saya rasa ia bukan cara yang betul untuk melakukannya kerana ia memecahkan struktur CSV apabila nilai mengandungi ",".
Saya pasti mesti ada cara yang lebih baik untuk melakukan ini.
Terima kasih banyak atas bantuan anda.
P粉6524951942023-09-17 09:57:48
Anda boleh membalut nilai dalam petikan berganda, tetapi ini bermakna anda perlu melepaskan petikan berganda di dalam nilai:
$sanitiseCsv = fn ($value) => '"'.str_replace('"', '""', $value).'"'; $vars = [ // 使用实际值定义占位符 '{$AGENT_NAME}' => $sanitiseCsv($agent['name']), '{$AGENT_PHONE}' => $sanitiseCsv($agent['phone']), ];
Nota: Menggandakan petikan berganda nampaknya merupakan cara yang betul untuk melepaskan petikan berganda dalam nilai CSV yang dibalut dengan petikan berganda.