Lost carriage return from SQL
Résolu
danmon
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
danmon Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
danmon Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème avec les retours à la ligne lorsque je prends un texte de ma base de données MySQL et que j'affiche ce texte. Voici un exemple qui explique le tout très clairement:
1. j'écris un texte et je le SUBMIT à ma BD. soit:
voici un exemple
de texte avec
des retours à la ligne.
2. lorsque je prends ce texte de la BD et que je l'imprime à l'écran ça me donne le suivant:
voici un exemplede texte avecdes retours à la ligne.
Comme vous voyez les retours à la ligne sont perdus. Ce que j'aimerai faire c'est essayer de reconnaître les retours à la ligne du texte dans la BD et les convertir en </br> avec ceci par exemple:
$message = preg_replace("/(\r\n¦\n¦\r)/", "</br>", $aResSQL['Message']);
et ensuite cela donne une bonne affichage. Le seul problème est que la fonction ne reconnaît pas \r\n ni \n ni \r.
Savez vous ce que MySQL utilise comme retour à la ligne (carriage return)?
Un grand merci
J'ai un problème avec les retours à la ligne lorsque je prends un texte de ma base de données MySQL et que j'affiche ce texte. Voici un exemple qui explique le tout très clairement:
1. j'écris un texte et je le SUBMIT à ma BD. soit:
voici un exemple
de texte avec
des retours à la ligne.
2. lorsque je prends ce texte de la BD et que je l'imprime à l'écran ça me donne le suivant:
voici un exemplede texte avecdes retours à la ligne.
Comme vous voyez les retours à la ligne sont perdus. Ce que j'aimerai faire c'est essayer de reconnaître les retours à la ligne du texte dans la BD et les convertir en </br> avec ceci par exemple:
$message = preg_replace("/(\r\n¦\n¦\r)/", "</br>", $aResSQL['Message']);
et ensuite cela donne une bonne affichage. Le seul problème est que la fonction ne reconnaît pas \r\n ni \n ni \r.
Savez vous ce que MySQL utilise comme retour à la ligne (carriage return)?
Un grand merci
A voir également:
- Lost carriage return from SQL
- Win setup from usb - Télécharger - Utilitaires
- Attempting boot from usb device - Forum Windows 10
- Logiciel sql - Télécharger - Bases de données
- Musique lost bunker - Forum Musique / Radio / Clip
- Apply update from adb traduction - Forum Téléphones & tablettes Android
1 réponse
Salut,
Normalement, si ton champ de stockage est un varchar, tu devrais avoir tes CR d'origine dedans. Donc plusieurs alternatives:
1. Les CR sont perdus à l'écriture dans la base
2. Les CR sont bien présents dans la base mais c'est le programme qui fait la lecture qui te les élimine
Faire un test:
==> affichage:
et voir ce que cela donne (concernant la syntaxe: sur Oracle, adapte-là si nécessaire à MySQL). Donc la longueur est bel et bien 3, le CR est présent dans la base.
hth,
+++
Normalement, si ton champ de stockage est un varchar, tu devrais avoir tes CR d'origine dedans. Donc plusieurs alternatives:
1. Les CR sont perdus à l'écriture dans la base
2. Les CR sont bien présents dans la base mais c'est le programme qui fait la lecture qui te les élimine
Faire un test:
DROP TABLE test2; CREATE TABLE test2 (a VARCHAR(10)); INSERT INTO test2 VALUES ('1 2' ); SELECT LENGTH (a) FROM test2;
==> affichage:
Table dropped. Table created. 1 row created. LENGTH(A) ---------- 3 1 row selected.
et voir ce que cela donne (concernant la syntaxe: sur Oracle, adapte-là si nécessaire à MySQL). Donc la longueur est bel et bien 3, le CR est présent dans la base.
hth,
+++
Mon cas correspond bien à ton cas 2. Les CR sont conservés dans la BD.
Le champs est de format: "text" et de type: "utf8_unicode_ci"
En php, il y a une fonction qui te fait ça automatiquement :
nl2br (string) => Retroune le texte, en remplaçant les fins de ligne par des <br />
Mais le problème c'est que nl2br ne reconnaît pas les CR tout comme la fonction preg_replace().
Est-ce que MySQL charge les CR d'une autre façon que \n ou \r\n??
Et en faisant le remplacement avant d'envoyer le texte dans ta base ? :-P