Page 1 sur 1

Probleme d'utilisation de ereg_replace

Posté : 25 avr. 2006, 12:20
par cortex007
Probleme d'utilisation de la fonctionereg_replace.
Afin d'afficher correctement le contenu d'en chaine dans la cellule d'un tableau html, avec prise en compte des retours a la ligne.
J'applique cette fonction a une chaine :
$chaine=StripCSlashes(trim($_POST['formulaire']))  // je pense pas que cette action soit responsable du probleme mais je la met quand meme
$formatligne=chunk_split($chaine,160,'<BR>'); // pour obliger un saut de ligne apres une ligne remplie
$chaine=ereg_replace(chr(13),'<br>',$formatligne);      // ligne qui pose un probleme pour moi 
avant l'utilisation de la fonction, $chaine='1'+chr(13)+'2'
apres l'utilisation de la fonction, $chaine='1'+'<BR>+'2'+'<BR>+'?'+'2>' ou ? est soit un espace ou un caractere non affichable.
d'apres vous il se passe quoi ?

Posté : 25 avr. 2006, 12:23
par eurodeka
En faite avec ce code tu veut faire quoi exactement ?

Posté : 25 avr. 2006, 12:28
par Ryle
chunk_split te divise ta chaine en segments de 160 octets de longueur et rajoute des retours charriots après chacun... j'ose même pas imaginer la tête de ce que contient ton $formatligne avant le ereg_replace...

Un nl2br() pour convertir retour charriot en <br /> ne serait-il pas tellement plus simple à utiliser ? :)

Posté : 25 avr. 2006, 13:07
par cortex007
Merci de vos reponse :)
...
:arrow: Mince le comportement de nl2br est le meme que celui de ereg_replace
:( (ca rajoute des morceau de chaine non pevu)

:arrow: pour resumer la situation, je cherche a transformer les chr(13) en <br> dans une chaine pour la voir s'afficher avec un minimum de formatage dans une cellule de tableau ou un cadre. les chr(13) pris en compte devrons etre ceux existant dans la chaine est ceux qui devrons etre introduit dans la chaine pour tenir compte du nombre de colonne du contenant
:arrow: Je ne crois pas que le probleme viens du chunk_split car j'ai mis en commentaire dans le code cette fonction et le comportement est le meme

Posté : 25 avr. 2006, 13:08
par zeus
est-ce qu'on peut dire que le pb est résolu ?

Posté : 25 avr. 2006, 14:18
par Ryle
As-tu le même problème si tu fais directement :
echo nl2br($_POST['formulaire']);
Je comprend vraiment pas l'intêret du chunk_split :(

Posté : 25 avr. 2006, 14:45
par cortex007
:arrow: non sans pretraitement de chaine nl2br resoud le probleme lorsqu'in attaque directement $_POST, meme si a la fin de l'affichage il subsiste un '>'
pourquoi la ca marche et pourquoi il reste un petit morceau a la fin ?

:arrow: Comme je fait apparaitre la chaine dans un contenant avec un nombre de colonnne limite, jutilise chunk_split pour faire des retours a la ligne auto en fin de colonne.
Si je fait une erreur logique ou d'utilisation de fonctions c'est normal je suis un noob ;)

au fait le retour du formulaire vient d'un texaera si ca peut aider

Posté : 25 avr. 2006, 15:49
par jojolapine
je pense que si ton conteneur à une taille fixe correctement définie, ton texte s'adaptera atumatiquement et dobnc plus besoin de chunk_split

Posté : 25 avr. 2006, 16:01
par Ryle
Essaie eventuellement avec la méthode wordwrap :
$chaine = wordwrap($_POST['formulaire'], 20);
echo nl2br($chaine);

Posté : 25 avr. 2006, 16:19
par cortex007
je pense que si ton conteneur à une taille fixe correctement définie, ton texte s'adaptera atumatiquement et dobnc plus besoin de chunk_split
yep avec les balise <pre>

Posté : 25 avr. 2006, 16:20
par cortex007
Essaie eventuellement avec la méthode wordwrap :
$chaine = wordwrap($_POST['formulaire'], 20);
echo nl2br($chaine);
j'ai deja essaye avec wordwrap ca donne la meme chose :(

Posté : 25 avr. 2006, 16:23
par cortex007
l'utilisation des basiles html preformate <pre> resolvent le probleme merci pour votre aide
probleme resolu