PHP regex ereg_replace les espaces par  

Bonjour,

J'ai developpé une appli php/MySQL.
Dans la base les donnees j'ai du texte formatte ainsi:

blabla blabla blabla:
- blablablabla blabla blabla
- blabla blabla blabla
- blabla blabla

Le probleme est qu a l affichage j obtiens:

blabla blabla blabla:
- blablablabla blabla blabla
- blabla blabla blabla
- blabla blabla

... il n'affiche pas les 1ers espaces importants pour l indentation.

J'aimerai remplacer les espaces par   MAIS UNIQUEMENT CEUX EN DEBUT DE LIGNE.

j ai essayé
$text= ereg_replace('^[[:space:]+]', ' ', $text);
mais marche pas...

Est que vous auriez une idee de regex qui pourrais marcher.

Merci pour votre contribution
Configuration: Windows XP
Firefox 3.0.3

6 réponses

  1. attention, mon code précédent ne marche pas bien en copie/coller :
    > le [  ] est fait avec [  ], et à savoir que   ne retourne pas le caractère "espace", mais l' "espace insécable"..
    " "(espace)=  et " "( )=&#160

    > fait ton copie coller, mais refait manuellement les espaces du str_replace(" ", ...
    1. Ah ah !!,

      j'ai ptet ca comme piste (remplacer les guillemets " au lieu de ' dans votre fonction) :

      $text= ereg_replace("^[[:space:]+]", " ", $text);

      Sinon, avez vous testé la fonction str_replace() ?.

      Cordialement.
      1. Bonjoooour,

        Alors...

        "
        blabla blabla blabla:
        - blablablabla blabla blabla
        - blabla blabla blabla
        - blabla blabla

        Le probleme est qu a l affichage j obtiens:

        blabla blabla blabla:
        - blablablabla blabla blabla
        - blabla blabla blabla
        - blabla blabla
        "
        --> Il semble difficile de voir la différence entre les deux (:>)... meme avec une loupe.

        "J'aimerai remplacer les espaces par MAIS UNIQUEMENT CEUX EN DEBUT DE LIGNE."

        --> remplacer les espaces par koi exactement ?.

        Merci pour vos précisions.
        1. mon post s'est mal affiché... les espaces en debut de lignes ne sont pas affichés!

          C'est exactement le PB que j ai aussi sur mon site

          J'ai reformater mon message.
          Merci de suivre sous ce lien.

          http://www.commentcamarche.net/forum/affich 8670316 php regex ereg replace espaces par nbsp
      2. Re,

        - Un admin. a du supprimé votre lien j'en ai bien peur (:<).
        - c'était pourtant le bon lien.

        Que faire ?...
        1. Ouh !!!

          (hé hé - je vous ai fait peur la nan ... ?... ah bon)

          mes sources : https://www.php.net/ereg_replace

          Bonne soirée.
          1. Je reformate mon 1er post qui est mal passé.

            ***************************************************
            Dans la base les donnees j'ai du texte formatte ainsi:

            blabla blabla blabla:
            - blablablabla blabla blabla
                - blabla blabla blabla
                    - blabla blabla

            Le probleme est qu a l affichage j obtiens:

            blabla blabla blabla:
            - blablablabla blabla blabla
            - blabla blabla blabla
            - blabla blabla

            ... il n'affiche pas les 1ers espaces importants pour l indentation.

            J'aimerai remplacer les espaces par & nbsp; MAIS UNIQUEMENT CEUX EN DEBUT DE LIGNE.

            j ai essayé
            $text= ereg_replace('^[[:space:]+]', '& nbsp;', $text);
            mais marche pas...
            ********************************************************

            Reponse a CkoiDonc ??

            " ou ' c est pareil...

            c'est mon regex qui est faux.
            je suis newbie en regex...

            str_replace n'est pas appropié dans ce cas.
            en effet, je veux remplacer seulement les espaces du debut de chaque ligne et non tous
        2. pour le & :
          1- pour faire un &, tape &amp;
          2- donc, tape &amp;nbsp; pour faire un &nbsp;
          (après cette saisie, je verrait bien si ce que je dit est correct..)

          sinon, essaye sa :
          > string ereg_replace ( string $pattern , string $replacement , string $string )
          > mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

          $text= ereg_replace("^[ ]", "&nbsp;", $text);
          $text= str_replace("\n ", "\n&nbsp;", $text);
          $text= str_replace("  ", " &nbsp;", $text);

          ou même, utilise la balise <pre>(preformated)</pre>