Heim > Fragen und Antworten > Hauptteil
Ich habe eine CSV-Vorlagendatei, die Platzhalter wie {$NAME}
enthält
Jetzt möchte ich alle diese Platzhalter durch tatsächliche Werte ersetzen.
Ich verwende Laravel, aber das spielt keine Rolle.
Die aktuelle Praxis ist wie folgt:
$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文件
Das funktioniert, aber ich glaube nicht, dass es der richtige Weg ist, weil es die CSV-Struktur zerstört, wenn ein Wert "," enthält.
Ich bin mir sicher, dass es dafür einen besseren Weg geben muss.
Vielen Dank für Ihre Hilfe.
P粉6524951942023-09-17 09:57:48
您可以用双引号包裹值,但这意味着您需要在值内部转义双引号:
$sanitiseCsv = fn ($value) => '"'.str_replace('"', '""', $value).'"'; $vars = [ // 使用实际值定义占位符 '{$AGENT_NAME}' => $sanitiseCsv($agent['name']), '{$AGENT_PHONE}' => $sanitiseCsv($agent['phone']), ];
注意:在双引号包裹的CSV值中,双倍双引号似乎是正确的转义双引号的方式。