PHP - remplacer dans une chaine de caractère

Bonjour,

voilà je cherche à faire un remplacement particulier en PHP :
remplacer dans une chaine "/" par ":" sauf dans le cas ou "[/" (le slash est précéder d'un crocher)

exemple : la chaine "maison /toto / titi" devient après transformation "maison /toto : titi"

Merci d'avance
Configuration: Windows XP
Firefox 3.0

8 réponses

  1. Contributeur
    Bonjour,

    Pour ton cas il faut que tu utilise les expressions régulière en PHP. Par contre ça fait un sacré bout de temps que je n'ai pas mis le nez dans du php donc je ne sais plus exactement la syntaxe qui te correspondrait au niveau de l'expresssion régulière.
    Je te conseilles de regarder ce que tu trouve sur google en tutoriel sur les regex PHP, et notamment te documenter sur le site même : https://www.commentcamarche.net/contents/803-php-expressions-regulieres

    ps: sur la page ce qui t'intéressera sera surtout la fonction " ereg_replace() "

    Bon courage.
    0
    1. JE suis un peu debutant en PHP.
      Quelqu'un peut t'il donner plus de precisions.

      Merci
      0
      1. Contributeur
        Tu as lu la page que j'ai donné ? Qu'est ce que tu n'as pas compris ?
        0
      2. Contributeur
        Sinon pour faire plus simple tu as la fonction 'str_replace'.
        La documentation est sur cette page : http://www.manuelphp.com/php/function.str-replace.php

        Pour ton cas tu n'auras qu'à faire quelque chose dans ce genre :

        $chaine = "\titi \ toto";
        $nouvelle_chaine = str_replace(" \\ "," : ",$chaine);
        echo $nouvelle_chaine;
        

        0
    2. JE pense que tu n'as pas bien compris mon cas :
      la chaine "maison /toto  /titi" devient après transformation "maison /toto  :titi" 
      0
      1. la chaine "maison \/toto\ /titi" devient après transformation "maison \/toto\ :titi"
        0
        1. dans ces cas la il faut échapper le premier slashes avec un anti slash ...
          0
      2. la chaine "maison [/ toto /titi" devient après transformation "maison [/ toto :titi"
        0
        1. remplacer dans une chaine un "/" par un ":" sauf dans le cas ou "[/" (le slash est précéder d'un crocher)

          code PHP ?
          0
          1. Ce que tu demandes releve d'un haut niveau ... Je te conseille maintenant de réfléchir et d'apprendre correctement le code PHP ... Avant de te metre a des machins trucs bien chaud ... Suffit de mettre des antislash je le répéte ...
            0
          2. @Eldestje ne cherche pas des conseils.
            Je cherche de l'aide
            0
          3. @bono92bah dans ce cas la ... je vais pas y aller par 4 chemins ^^

            Le [ est un métacaractère, tout comme le \ ...

            Le \ sert à échapper le caractère qu'il précède afin qu'il ne soit pas transformé par une fonction ...

            Donc le plus simple est de mettre un \ avant le / au lieu de mettre un crochet ...
            0
        2. $chaine = "maison \[\/ toto /titi";
          $nouvelle_chaine = str_replace("/"," : ",$chaine);
          echo $nouvelle_chaine;
          

          Je te garanti pas le résultat, mais je pense que c'est ca ... Les caractères spécifiques sont à échapper à l'aide d'un ANTISLASH (\)...
          0
          1. Contributeur
            S'il suffit juste de faire le remplacement devant la chaine "titi" dans ce cas :
            $chaine = "\titi \ toto";
            $nouvelle_chaine = str_replace(" \\titi "," :titi ",$chaine);
            echo $nouvelle_chaine;
            


            Après libre à toi de faire plus complexe et d'utiliser les regexp (voir la page donnée plus haut)
            0