[RESOLU] Export csv

Petit nouveau ! | 4 Messages

11 févr. 2023, 17:01

Bonjour,

J'ai un petit soucis avec un export *.csv de ma boutique vers pinterest.

J'arrive bien a créer mon fichier mais au niveau des mes descriptions de produit j'ai du html dedant que j'ai volontairement conservé pour embellir le texte sur pinterest.

Certaine de mes descriptions ne sont pas complètes dans mon csv.

Voilà un exemple de description:

Code : Tout sélectionner

<p><strong>Descriptif</strong> : S’utilise avec les produits techniques <span style="color:#2c9ffd;"><a href="mon_site" target="_blank" style="color:#2c9ffd;" rel="noreferrer noopener">BBHaire</a></span>.</p>

Dans mon fichier csv j'ai :

Code : Tout sélectionner

<p><strong>Descriptif</strong> : S’utilise avec les produits techniques <span style=""color:#2c9ffd

Sans surprise les guillemets posent problème puisqu'ils sont utilisés comme délimiteur. Du coup Il manque un bout. J'ai essayé de mettre un addslashes sans grande conviction et j'obtiens ceci:

Code : Tout sélectionner

<p><strong>Descriptif</strong> : S’utilise avec les produits techniques <span style=\"color:#2c9ffd

J'ai lu que dans un fichier csv il fallait échapper les guillemets par un double guillemets. Je pensais pouvoir faire ca facilement avec un preg_replace mais j'obtiens un message d'erreur :

Code : Tout sélectionner

$description = preg_replace('"', '""', $description);
Warning: preg_replace(): No ending delimiter '"' found in............

Si quelqu'un a une idée pour me sortir de cette galère je suis preneur.

Merci d'avance :wink:

Mammouth du PHP | 2703 Messages

11 févr. 2023, 19:53

https://www.php.net/manual/fr/function.str-replace.php suffit dans ce cas et est plus facile à utiliser.

Petit nouveau ! | 4 Messages

11 févr. 2023, 20:19

Merci pour ta réponse.

Effectivement je ne sais pas pourquoi je suis parti sur preg_replace.

Je viens d'essayer avec str_replace() et ca me fait un truc bizarre. Ca triple les guillemets et ca ne règle pas mon problème de description :

Code : Tout sélectionner

<p><strong>Descriptif</strong> : S’utilise avec les produits techniques <a href=""""mon_site"""" target=""""_blank"""" rel=""""noreferrer noopener""""><span style=""""color:#2c9ffd
J'ai écrit ca:

Code : Tout sélectionner

$descript = str_replace('"', '""', $descript);

Mammouth du PHP | 2703 Messages

11 févr. 2023, 21:33

color:#2c9ffd;
vous êtes sur que le séparateur est bien le " et non ; ?

Petit nouveau ! | 4 Messages

11 févr. 2023, 21:42

Le séparateur est la virgule dans mon csv.
Par contre chaque champ "texte" sont encadré par des ". Du coup quand des guillemets se trouvent dans le texte il faut les échapper. Avec php un addslashes va suffir mais pour csv il faut doubler les guillemets.

J'ai essayé de faire un export csv sous Prestashop et les guillemets sont bien doublés.

Mon problème est que je n'ai aucune idée de comment faire pour doubler des guillemets dans une chaine de caractère.

Mammouth du PHP | 2703 Messages

11 févr. 2023, 22:35


Petit nouveau ! | 4 Messages

12 févr. 2023, 12:27

j'ai trouvé. En fait j'ai inversé mon str_replace:

Code : Tout sélectionner

$descript = str_replace('"', '""', $descript); // ce qui ne fonctionne pas $descript = str_replace('""', '"', $descript); // ce qui fonctionne
Merci pour votre aide