[PHP] remplacement dynamique d'une chaine

Résolu
Morpheas Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Morpheas Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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