Caractère espace non respecté en php

Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - Modifié par t671 le 12/05/2012 à 10:59
 t671 - 21 mai 2012 à 17:18
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 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
12 mai 2012 à 17:50
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
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 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
13 mai 2012 à 14:50
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
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 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 15/05/2012 à 21:54
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
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