[PHP] str_replace() avec comptage

Résolu
ten62 Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
ten62 Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -
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
 
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
 
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   Statut Membre Dernière intervention   186
 
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   Statut Membre Dernière intervention   23
 
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   Statut Membre Dernière intervention   23
 
vraiment un super méga merci !
0