Page 1 sur 1

Garder les espaces en début de ligne

Posté : 14 oct. 2006, 21:59
par Dookie
Bonjour, je débute en php, et j'ai besoin d'un peu d'aide :
Alors voilà, je récupère un longText de ma base de donnée et je veux l'afficher, le problème vient du fait que s'il y a des espaces en début de ligne, ils sont effacés lors de l'affichage.
Si le commentaire dans ma bdd est (les _ sont des espaces) :
"____Bonjour,
____moi ça va"
Cela m'affichera sur ma page ( avec un echo nl2br($val["comment"]) :
"Bonjour,
moi ça va"

Or moi je veux les garder, ces espaces >.<
(la fonction nl2br insère <br/> devant toutes les nouvelles lignes, sinon tout s'affiche sur une seule ligne).

Alors je ne vois pas comment faire, un str_replace(" ","&nbsp;",$val["comment"]) remplacera tout les espaces par des espaces insécables, donc effectivement ceux en début de ligne apparaissent bien, mais du coup il n'y a plus de retour à la ligne automatique ^-^"

J'utiliserais bien preg_replace, mais je ne sais pas vraiment m'en servir, dois-je chercher /n ou /r pour le retour à la ligne, et comment dire qu'il faut remplacer chacun des espaces par un &nbsp; et non pas tous par un seul ?
Ou y a t'il une méthode plus facile ?

Merci d'avance à quiconque peut me donner un coup de main.

Posté : 15 oct. 2006, 07:47
par Invité
Salut,

Ca va te servir à quoi d'avoir des espaces en début de chaine ?

J'ai eu un problème similaire à part que moi je faisais un trim() sur la variable post avant de l'enregistrer dans ma bdd, et vu que mes smilies était de la forme " :) " tous ceux qui était en début et en fin de message n'étaient pas parser par mon str_replace(), je n'ai pas eu d'autre choix que de rajouter un espace en début et fin du message à l'affichage.

C'est peut-être une solution ?

Posté : 15 oct. 2006, 14:53
par Ajoloca
Bonjour,

Et en utilisant tout simplement la balise (X)HTML <pre></pre> comme ceci

Code : Tout sélectionner

<pre> <?php echo nl2br($a); ?> </pre>

Posté : 15 oct. 2006, 22:44
par Dookie
En fait je pense que je vais simplement faire un str_replace d'un caractère particulier en &nbsp; et ça fera très bien l'affaire. :)

En ce qui concerne la balise <pre></pre> ça ne m'intéresse pas car ça garde vraiment exactement le message comme il a été écrit, cad qu'il n'y même plus les retours automatiques à la ligne ^-^"

Je trouvais ça juste dommage de supprimer les espaces en début de ligne, on ne peut pas faire de petits dessins ou du texte 'organisé'.

Enfin bon, merci quand même pour l'aide ;)

Posté : 15 oct. 2006, 22:45
par ouckileou
C'est résolu ?

Posté : 15 oct. 2006, 22:47
par artotal
tu peux mettre les entité html tout simplement
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Posté : 15 oct. 2006, 22:50
par Ajoloca
Re,

Je crois que tu n'as pas essayé ce que je t'ai dis, j'ai fait des essais et ça fait exactement ce que tu veux. cad: conservation des espaces là où ils sont et remplace les retours chariot par des <br /> pour le saut de ligne à l'affichage du navigateur.

Posté : 16 oct. 2006, 19:54
par Dookie
Je crois que tu n'as pas essayé ce que je t'ai dis, j'ai fait des essais et ça fait exactement ce que tu veux. cad: conservation des espaces là où ils sont et remplace les retours chariot par des <br /> pour le saut de ligne à l'affichage du navigateur.
Si, si, j'ai essayé, cela résoud le problème mais en crée un autre : avec ses balises il n'y a plus de retour automatique à la ligne, les seuls retours à la ligne sont les retours chariot de l'utilisateur. Donc là si ma phrase était entouré de la balise <pre>, tout mon petit paragraphe serait écrit sur une seule ligne, avec une barre de défillement pour voir ce qui dépasse de l'écran.

Comme ce n'est pas d'une importance vitale, vous vous imaginez bien :p , je reste sur ma solution qui est de remplacer un caractère peu usité par des $nbsp
Je pensais qu'il y avait quelque chose tout bête pour le faire, mais en fait j'ai l'air de m'être trompé, donc je ne veux pas insister ^-^"