PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-01-2012 08:46:18

epicentre
Membre
Inscription : 27-01-2012
Messages : 6

remplacer les espaces par un caractere

Bonjour,

J'aimerai replacer tous les espaces qui se trouvent entre crochets, par un caractère *
c'est pour pouvoir par la suite faire un tri

exemple

{Annuaire|Blog|Site|Portail} des {meilleurs clips|meilleurs films|meilleurs extraits|meilleures vidéos}
doit devenir
{Annuaire|Blog|Site|Portail} des {meilleurs*clips|meilleurs*films|meilleurs*extraits|meilleures*vidéos}

Merci de votre aide, bonne journée

Hors ligne

#2 27-01-2012 09:36:04

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : remplacer les espaces par un caractere

avec str_replace wink

a++

Hors ligne

#3 27-01-2012 19:10:09

epicentre
Membre
Inscription : 27-01-2012
Messages : 6

Re : remplacer les espaces par un caractere

Merci de ta réponse Pierrot, mais je ne vois pas comment str_replace peut faire la différence entre l'espace qu'il y a entre {Annuaire|Blog|Site|Portail}et des
et l'espace qu'il y a entre {meilleurs et clips|
si tu regardes bien il n'y a que les espaces contenus dans les {} qui doivent être remplacés par *

Hors ligne

#4 28-01-2012 01:21:37

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : remplacer les espaces par un caractere

Il va peut être falloir que je pense sérieusement à changer mes lunettes car des espaces dans {Annuaire|Blog|Site|Portail} je n'en vois pas cool


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 28-01-2012 12:20:01

epicentre
Membre
Inscription : 27-01-2012
Messages : 6

Re : remplacer les espaces par un caractere

Bon alors je reprends pour ceux qui n'ont pas de bonnes lunettes cool

il y a une phrase avec des mots, entre les mots il y a des espaces jusque la tt le monde a compris je pense lol
certains mots ont des synonymes qui sont mis entre {}
certains synonymes sont composés d'un seul mot comme {Annuaire|Blog|Site|Portail} et d'autres de 2 mots ou plus comme {meilleurs clips|meilleurs films|meilleurs extraits|meilleures vidéos}
donc je dois d'abord isoler dans ma phrase tous les {} et voir si il y a des espaces dedans et ensuite remplacer les espaces par le caractère *

ma phrase de départ {Annuaire|Blog|Site|Portail} des {meilleurs clips|meilleurs films|meilleurs extraits|meilleures vidéos}
doit devenir
{Annuaire|Blog|Site|Portail} des {meilleurs*clips|meilleurs*films|meilleurs*extraits|meilleures*vidéos}
voili voilou

Hors ligne

#6 28-01-2012 17:24:26

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : remplacer les espaces par un caractere

Si tu ne sais pas à l'avance ce que contiennent tes {} et que tu doives à ce titre vérifier la présence d'espace à l'intérieur, alors il te faut passer par une expression régulière. Sinon comme l'a dit Pierrot, le str_replace suffit.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 28-01-2012 19:13:15

epicentre
Membre
Inscription : 27-01-2012
Messages : 6

Re : remplacer les espaces par un caractere

Merci de ta réponse

bon j'ai avancé un pti peu, j'ai fait ça

$ch="{Annuaire|Blog|Site|Portail} des {meilleurs clips|meilleurs films|meilleurs extraits|meilleures vidéos}";
$pattern2 = '#\{([^{}]*)\}#msi';
preg_match_all($pattern2, $ch, $tab);
foreach($tab[0] as $key=>$val)
{
$texte .= str_replace(" ","*",$val);
}
echo $texte;

ça me donne {Annuaire|Blog|Site|Portail}{meilleurs*clips|meilleurs*films|meilleurs*extraits|meilleures*vidéos}
mais en route j'ai perdu les mots qui ne sont pas entre {}

Hors ligne

#8 28-01-2012 21:09:23

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : remplacer les espaces par un caractere

Alors en se basant sur la chaîne exemple que tu nous as donné, ceci devrait mieux fonctionner


$ch="{Annuaire|Blog|Site|Portail} des {meilleurs clips|meilleurs films|meilleurs extraits|meilleures vidéos}";
$motif='#(?<![}])([\s]+)(?![{])#';
$result=preg_replace($motif,'*',$ch);
 

++

Dernière modification par Jc (28-01-2012 21:10:14)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 28-01-2012 22:19:23

epicentre
Membre
Inscription : 27-01-2012
Messages : 6

Re : remplacer les espaces par un caractere

Oh purée la regex tongue
il me reste plus qu'a la décortiquer et essayer de la comprendre smile
et te remercier pour ta patience et ton aide

Bon week end

Hors ligne

Pied de page des forums