[PHP] remplacement dynamique d'une chaine

Résolu/Fermé
Morpheas Messages postés 2 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 21 mars 2007 - 21 mars 2007 à 09:29
Morpheas Messages postés 2 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 21 mars 2007 - 21 mars 2007 à 23:22
Bonjour,

Je dispose d'un texte parsemé de chaines de caractères au format:
##chaine1|chaine2|chaine3##

Je souhaiterais remplacer chaque occurence dynamiquement en fonction des valeurs de chaine1, chaine2 et chaine3, par exemple par:
chaine1.php?chaine2=chaine3

A l'aide de eregi_replace et d'une expression régulière, j'arrive à détecter les occurrences pour les remplacer par une chaine prédéterminée, mais comment faire pour les remplacer par une chaine générée dynamiquement en fonction des valeurs de mes chaine1, chaine2 et chaine3? Autrement dit, comment récupérer les valeurs de chaine1, chaine2 et chaine3 trouvées avec mon expression régulière?

Il doit y avoir moyen de se débrouiller en parcourant le texte avec des strpos et en bouclant, mais j'aimerais si possible éviter toute récursivité...
A voir également:

1 réponse

Morpheas Messages postés 2 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 21 mars 2007
21 mars 2007 à 23:22
Problème résolu avec la fonction preg_replace_callback:


function parsetexte($pattern){
return "$pattern[1].php?pattern[2]=pattern[3]";
}

$texte="##chaine1|chaine2|chaine3##";
echo preg_replace_callback("/##(.+?)\|(.+?)\|(.+?)##/","parsetexte",$texte);


On obtient:
chaine1.php?chaine2=chaine3
0