PHP implémente le remplacement des espaces réservés dans les fichiers CSV par des valeurs réelles
P粉520204081
P粉520204081 2023-09-16 11:51:32
0
1
994

J'ai un modèle de fichier CSV qui contient des espaces réservés comme {$NAME} Maintenant, je veux remplacer tous ces espaces réservés par des valeurs réelles.

J'utilise Laravel, mais cela n'a pas d'importance.

La pratique actuelle est la suivante :

$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文件

Cela fonctionne, mais je ne pense pas que ce soit la bonne façon de procéder car cela casse la structure CSV lorsqu'une valeur contient ",".

Je suis sûr qu'il doit y avoir une meilleure façon de procéder.

Merci beaucoup pour votre aide.

P粉520204081
P粉520204081

répondre à tous(1)
P粉652495194

Vous pouvez mettre la valeur entre guillemets doubles, mais cela signifie que vous devez échapper aux guillemets doubles à l'intérieur de la valeur :

$sanitiseCsv = fn ($value) => '"'.str_replace('"', '""', $value).'"';

$vars = [ // 使用实际值定义占位符
   '{$AGENT_NAME}'  => $sanitiseCsv($agent['name']),
   '{$AGENT_PHONE}'  => $sanitiseCsv($agent['phone']),
];

Remarque : Doubler les guillemets semble être le bon moyen d'échapper aux guillemets doubles dans une valeur CSV entourée de guillemets doubles.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal