Page 1 sur 1

Des \r dans fichier JSON généré

Posté : 30 sept. 2021, 22:23
par hikaru59
Bonjour,
J'ai généré un JSON avec des données dans la BDD :

Code : Tout sélectionner

$query = $db->query('SELECT * FROM users ORDER BY id'); $results = $query->fetchAll(PDO::FETCH_ASSOC); header('Content-Type: application/json'); $json = json_encode($results); echo $json;
J'obtiens un fichier JSON, mais il y a \r dedans :

Code : Tout sélectionner

[ {"id":"1","firstname":"Terry","lastname":"Bogard","email":"terrybogard_at-email_net\r"}, {"id":"2","firstname":"Andy","lastname":"Bogard","email":"andybogard_at_email_net\r"}, {"id":"3","firstname":"Joe","lastname":"Higashi","email":"joehigashi_at-yahoo_com"} ]
J'ai essayé de supprimer les \r avant d'afficher, mais ça ne marche pas :

Code : Tout sélectionner

str_replace('\r', '', $json); echo $json;

Re: Des \r dans fichier JSON généré

Posté : 30 sept. 2021, 22:53
par or 1
s'il y a les \r avec :
var_dump($results);
c'est que le problème ne vient pas du json, mais de ce qui a été sauvé en bdd.

Re: Des \r dans fichier JSON généré

Posté : 30 sept. 2021, 23:53
par hikaru59
En effet, il y des sauts de ligne enregistré dans la BDD.
Ce sont des données insérées automatiquement à partir d'un fichier CSV.

Voici mon fichier csv :
Terry;Bogard;terrybogard_at-email_net
Andy;Bogard;andybogard_at_email_net
Joe;Higashi;joehigashi_at-yahoo_com

Voici mon script d'insertion automatique de données. Je ne vois pas comment je peux corriger cela.

Code : Tout sélectionner

$contenu = file_get_contents('users.csv'); // Récupère le contenu $data = explode("\n", $contenu); // explode() coupe une chaîne en segments et retourne un tableau. On coupe au retour chariot \r ou nouvelle ligne \n foreach ($data as $d) { $d = explode(";", $d); // explode() coupe une chaîne en segments et retourne un tableau. On coupe au ; $firstname = $d[0]; $lastname = $d[1]; $email = $d[2]; $query = $db->prepare('INSERT INTO users (`firstname`, `lastname`, `email`) value (:firstname, :lastname, :email)'); $query->bindValue(':firstname', $firstname, PDO::PARAM_STR); $query->bindValue(':lastname', $lastname, PDO::PARAM_STR); $query->bindValue(':email', $email, PDO::PARAM_STR); // $query->execute(); }
Si je fais explode() sur \r, alors c'est des \n qui sont insérés dans la BDD.

Re: Des \r dans fichier JSON généré

Posté : 01 oct. 2021, 00:25
par or 1

Re: Des \r dans fichier JSON généré

Posté : 01 oct. 2021, 12:33
par hikaru59
Merci, c'est parfait avec \r\n

J'avais testé avec \n\r, mais ça ne marchait pas.