Caractère espace non respecté en php [Fermé]

Signaler
Messages postés
1305
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
22 février 2021
-
 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.

4 réponses

Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
225
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 ?
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 ????
Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
225
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 !
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 ???????
Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
225
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
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