Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous !
Je n'ai pas trouvé le moyen de ne pas tout remplacer avec str_replace
Exemple :
=> 'salut à toi, salut à lui et salut à vous'
je souhaite le résultat :
=> 'salut à toi, salut à lui et bonjour à vous'
c'est à dire limiter à X passage maximum (ici 2)
Existe-il une autre fonction que je n'ai pas vue ?
Merci d'avance
Dernière modification par JulioBox (25-06-2009 16:16:00)
Hors ligne
Si tu avais seulement fait l'effort de lire la doc, [http://fr2.php.net/manual/fr/function.str-replace.php]tu y aurais lu qu'il existe un quatrième argument optionnel à la fonction
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Si tu avais seulement fait l'effort de comprendre la doc tu aurais compris l'utilité de ce quatrième argument optionnel à la fonction :
Exemple :
Déjà ton $str2 = str_replace('bonjour', 'salut', $str,2); planterais car "2" n'est pas une variable.
Et ce $count sera renseigné par la fonction, il contiendra le nombre de fois que "ll" aura été remplacé, en aucun cas il limitera le nombre de remplacement à ce chiffre.
Merci de ne pas prendre les gens de haut quand on se plante :]
Dernière modification par JulioBox (25-06-2009 16:15:43)
Hors ligne
Allons, allons,
La traduction en français comporte une note pas très bien traduite :
traduit par :
Et en effet, $count contiendra le nombre d'occurrences remplacées et doit être une variable (car passée par référence).
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Allons, allons,
La traduction en français comporte une note pas très bien traduite :
COUNT : Note: If passed, this will hold the number of matched and replaced needles.traduit par :
COUNT : Note: Si fourni, contiendra le nombre de recherches et d'occurrences à remplacer.Et en effet, $count contiendra le nombre d'occurrences remplacées et doit être une variable (car passée par référence).
Au temps pour moi pour le passage par référence, ça m'apprendra à toujours tester avant de recommander une syntaxe.
Pour la fonctionnalité, la documentation en français, même revue par mcAllan, demeure ambigüe.
La traduction fidèle serait
contiendra le nombre d'occurrences concordantes et remplacées
Pour en revenir à ton problème de limitation des remplacements il faudrait regarder, me semble-t'il du côté des expressions rationnelles.
Pour me faire pardonner mon intempestivité, un petit cadeau tout de même:
Pardonné ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Hello
Merci à vous 2, oui pardonné pas grave ^^
Ca marche bien mais contrairement à str_replace je ne peux utiliser un array en entrée
Exemple de la doc :
Avec remplace_n ça ne fonctionne pas : comment modifier ta fonction ?
Merci à vous
Hors ligne
Dans l'exemple que tu donnes la limitation des remplacements n'a plus vraiment de sens donc, pourquoi vouloir réinventer la roue ?
Continue d'utiliser str_replace()
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Oui l'exemple de la doc ne correspond pas avec mon besoin, c'était pour montrer que les ARRAY sont possibles.
Ce que je souhaite est donc :
Suis-je clair ? merci encore
Hors ligne
Et il te servirait à quoi le "99" de $str2 ?
On s'en fiche c'est un exemple
Dernière modification par JulioBox (26-06-2009 10:28:32)
Hors ligne
Comment, du coup, faudrait-il interpréter le 2 sur cette phrase ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Le résultat devrait être :
"99 salut machin machin salut truc truc bonjour"
Sur chaque mot, 2 passages maxi.
Merci de ton aide, je cafouille dessus ^^
Hors ligne
Ce qui rend l'adaptation un peu délicate c'est le fait que les arguments passés à la fonction puissent être des array ou des scalaires, et que si l'un est un scalaire et que l'autre est un array ou si les deux arrays n'ont pas le même nombre d'items, il faut voir si c'est exploitable ou pas et, dans la négative retourner un message d'erreur explicite.
Bref, on ne peut plus faire ça sur un coin de table. Il faut se poser et bien penser l'algorithme. Et là, je n'ai pas le temps.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pas de problème, pour le moment je garde str_replace et si jamais j'y parviens, je la poste ici.
Merci à vous !
Hors ligne
La solution passait, comme souvent dans ce cas par un petit peu de ré-entrance du code:
à tester, toutefois, encore et encore.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
...ou encore mieux chercher dans la doc mon cher Julio ><
Ce résultat est celui que je cherchais !
Merci pour tes efforts tout de même !
ps : comment fait-on passer le post en "[Résolu]" ?
Dernière modification par JulioBox (26-06-2009 13:28:21)
Hors ligne
...ou encore mieux chercher dans la doc mon cher Julio ><
C'est ce que je te disais ce matin
Pour en revenir à ton problème de limitation des remplacements il faudrait regarder, me semble-t'il du côté des expressions rationnelles.
A vérifier si str_remplace_n() ne se montre pas plus rapide que preg_replace(), les fonctions à base d'expressions rationnelles (avec lesquelles on me sait pas en osmose) étant réputées gourmandes en ressources.
Bref, l'important est qu'on ait contribué à faire avancer le schmilblick.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci bien !
Hors ligne
Pages :: 1