PHP - remplacer dans une chaine de caractère

bono92 -  
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   -
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
A voir également:

8 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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
bono92
 
JE suis un peu debutant en PHP.
Quelqu'un peut t'il donner plus de precisions.

Merci
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Tu as lu la page que j'ai donné ? Qu'est ce que tu n'as pas compris ?
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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
bono92
 
JE pense que tu n'as pas bien compris mon cas :
la chaine "maison /toto  /titi" devient après transformation "maison /toto  :titi" 
0
bono92
 
la chaine "maison \/toto\ /titi" devient après transformation "maison \/toto\ :titi"
0
Eldest Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   1
 
dans ces cas la il faut échapper le premier slashes avec un anti slash ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bono92
 
la chaine "maison [/ toto /titi" devient après transformation "maison [/ toto :titi"
0
bono92
 
remplacer dans une chaine un "/" par un ":" sauf dans le cas ou "[/" (le slash est précéder d'un crocher)

code PHP ?
0
Eldest Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   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
bono92 > Eldest Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
 
je ne cherche pas des conseils.
Je cherche de l'aide
0
Eldest Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   1 > bono92
 
bah 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
Eldest Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   1
 
$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
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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