Probleme d'utilisation de ereg_replace

Eléphanteau du PHP | 36 Messages

25 avr. 2006, 12:20

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 ?

Eléphanteau du PHP | 15 Messages

25 avr. 2006, 12:23

En faite avec ce code tu veut faire quoi exactement ?
http://clic-euro.com -> Cliquer, vous êtes maintenant rémunéré!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2006, 12:28

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 ? :)

Eléphanteau du PHP | 36 Messages

25 avr. 2006, 13:07

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
Modifié en dernier par cortex007 le 25 avr. 2006, 13:27, modifié 2 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 avr. 2006, 13:08

est-ce qu'on peut dire que le pb est résolu ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2006, 14:18

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 :(

Eléphanteau du PHP | 36 Messages

25 avr. 2006, 14:45

: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

ViPHP
ViPHP | 3607 Messages

25 avr. 2006, 15:49

je pense que si ton conteneur à une taille fixe correctement définie, ton texte s'adaptera atumatiquement et dobnc plus besoin de chunk_split

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2006, 16:01

Essaie eventuellement avec la méthode wordwrap :
$chaine = wordwrap($_POST['formulaire'], 20);
echo nl2br($chaine);

Eléphanteau du PHP | 36 Messages

25 avr. 2006, 16:19

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>

Eléphanteau du PHP | 36 Messages

25 avr. 2006, 16:20

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 :(

Eléphanteau du PHP | 36 Messages

25 avr. 2006, 16:23

l'utilisation des basiles html preformate <pre> resolvent le probleme merci pour votre aide
probleme resolu