Caractère espace non respecté en php

t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
 t671 -
Bonjour,

Je saisi un texte, style lettre, via un menu qui ensuite écrit ce texte dans la base et l'affiche dans une page. Le probléme, c'est que les caractères espaces ne sont pas pris en compte.
Si je veux écrire "AAAAAAAAAAA BBBBBBBBB", il m'affiche "AAAAAAAAAAABBBBBBBBBB". Pourtant, dans le champs de la base, les caractères espace sont respectés.
Voici ce que j'écris dans mon script :
$texte = $_GET["texte"]; 
$texte = mysql_real_escape_string($texte); 
$texte = eregi_replace("([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)","<A HREF=\"mailto:\\1\">\\1</A>", $texte); 
$texte = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])","<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\">\\1://\\2\\3</A>",$texte);

Et pour restituer mon texte à l'écran, j'écris :
echo nl2br($row['texte']);

Malgré cela, les caractères espaces ne sont pas restitués.
Y a t'il une formule pour afficher le texte avec ses espaces ?

Merci.
A voir également:

4 réponses

JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Salut !
Je te conseille de faire c'est traitements (eregi_replace) en sortie, et non pas en entré !

Tu dis que dans ta bdd, les espaces existent !
Et si tu n'utilisais pas "nl2br", ça reste idem ?
0
t671
 
Merci Joos.
Si j'enlève "nl2br", plus aucun espace n'est respecté.
Si je place eregi_replace avant affichage, c'est pareil !
Et je confirme que dans la bdd, les espaces sont respectés.
Il doit exister une formule permettant de prendre en compte ces espaces ...... !!!Mais laquelle ????
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Bizarre !
Faut dire que la fonction "eregi_replace" est obsolète depuis PHP 5.3.0, donc j'arrive pas a l'essayer !

Essaye de ne faire aucun traitement, ni avant l'insertion dans la bdd, ni avant l'affichage !
0
t671
 
Quand je ne fait aucun traitement, ni avant insertion dans la bdd ni après, j'ai le même résultat qu'auparavant.
C'est à dire que les sauts de ligne sont respectés à l'affichage, mais pas les espaces plus ou moins longs entre des mots.
Tu me dis que la fonction "eregi_replace" est devenu obsolète.
Qu'est ce qui la remplace ???????
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
franchement, c'est bizarre, normalement l'affichage direct sans aucun traitement devrait afficher les textes tel qu'ils sont dans la bdd !

Au lieu d'afficher, fait un var_dump , et regarde si les espaces existent dans les variables !

La fonction qui remplace eregi_replace est : preg_replace
0
t671
 
Si je fais un var_dump, j'ai :
string(1768) "...........tout mon texte sans les retour à la ligne........"

Et avec preg_replace, j'ai le même résultat que eregi_replace
0