Heim  >  Fragen und Antworten  >  Hauptteil

PHP implementiert das Ersetzen von Platzhaltern in CSV-Dateien durch tatsächliche Werte

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粉520204081P粉520204081422 Tage vor984

Antworte allen(1)Ich werde antworten

  • P粉652495194

    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值中,双倍双引号似乎是正确的转义双引号的方式。

    Antwort
    0
  • StornierenAntwort