Maison  >  Questions et réponses  >  le corps du texte

PHP implémente le remplacement des espaces réservés dans les fichiers CSV par des valeurs réelles

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粉520204081P粉520204081422 Il y a quelques jours983

répondre à tous(1)je répondrai

  • P粉652495194

    P粉6524951942023-09-17 09:57:48

    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.

    répondre
    0
  • Annulerrépondre