Lost carriage return from SQL
Résolu
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
Configuration: Windows XP Firefox 2.0.0.14
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: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,
+++-
-
@danmonOki... le souci c'est que pour cette option je ne peux pas aider, <honte>car moi et le PHP = 2</honte> En Java, par exemple, j'afficherais en héxa le soustring correspondant à un CR pour voir son contenu...
-
@danmonBonjour.
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 /> -
@macgawelmerci quand même Sandul et merci macgawel,
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?? -
@danmonMais le problème c'est que nl2br ne reconnaît pas les CR tout comme la fonction preg_replace().
Et en faisant le remplacement avant d'envoyer le texte dans ta base ? :-P
-