[PHP] str_replace() avec comptage

Résolu/Fermé
ten62 Messages postés 158 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 5 avril 2011 - 7 juil. 2009 à 20:27
ten62 Messages postés 158 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 5 avril 2011 - 11 juil. 2009 à 19:28
Bonjour,

Voila, j'ai un problème que je vais illustrer par un exemple tout simple :

Dans un document, j'ai plusieurs fois le mot "rouge" par exemple,
je veux les remplacer par rouge1, rouge2, rouge3, etc ...

Et je ne pense pas que ce soit possible avec un str_replace() ...

Quelqu'un a-t-il une idée svp ?

Merci bcp !
A voir également:

5 réponses

Utilisateur anonyme
7 juil. 2009 à 23:26
trouvé !

<?php
$str = "rouge blablablablabla rouge blablablablabla rouge encore et re rouge ";

$nbr_words = substr_count($str, 'rouge ');

for($i=1; $i<=$nbr_words; $i++){
     $str = preg_replace('/rouge /', 'rouge'.$i.' ', $str, 1);
}

echo $str;
?>


a toi d'ajouter la regex pour les liens ;)

EDIT :

bon dans mon élan:

<?php
$str = "https://www.google.com/?gws_rd=ssl blablablablabla http://www.site.com/ blablablablabla http://www.resite.com";

$nbr_words = substr_count($str, 'http://www');

for($i=1; $i<=$nbr_words; $i++){
     $str = preg_replace('#http://www.[a-z0-9._/-]+#i', 'http://site.com/page.php?numero='.$i.'&url=', $str, 1);
}

echo $str;
?>

1
Utilisateur anonyme
7 juil. 2009 à 21:49
EDIT->Oups désoler le code ne fonctionnait vraiment pas, je reposte quand j'ai quelque chose qui fonctionne
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
7 juil. 2009 à 22:24
Tu devrais aller voir du coté de preg_replace
en effet tu peux lui passer dans un parametre le nombre max d'occurences à remplacer (tu mettrais donc 1 dans ton cas)

et tu fais une boucle : tant que ta chaine initiale est différente de la chaine apres le preg_match, tu incrémentes un variable

ca donnerai quelquechose comme ca :

$i=1;
$letexte = '...';
$lachainearemplacer = 'rouge '; // pas oublier l'espace à la fin sinon ca va continuer à boucler ^^

while($letexte != preg_replace("/$lachainearemplacer/" ,$lachainearemplacer.$i.' ' , $letexte, 1){

$i++;

}
0
ten62 Messages postés 158 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 5 avril 2011 23
7 juil. 2009 à 23:09
Merci mais ça ne fonctionne pas ..

Plus concrètement, je voudrait remplacer tout les liens de ma page, en y ajoutant juste après le href=" ceci :
http://site.com/page.php?numero=1&url=
http://site.com/page.php?numero=2&url=
http://site.com/page.php?numero=3&url=
http://site.com/page.php?numero=4&url=

Une idée ?

Merci bcp !
0

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

Posez votre question
ten62 Messages postés 158 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 5 avril 2011 23
11 juil. 2009 à 19:28
vraiment un super méga merci !
0