[PROBLEME] boucle et preg_replace [Résolu]

Messages postés
14
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
7 décembre 2009
- - Dernière réponse : neigedhiver
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
- 7 déc. 2009 à 21:34
Bonjour à tous!

Aprés une journée de galère, je viens vous demander un coup de mains car je commence a peter un cable...

Je suis en train de créer une sorte de mini-cms, j'utilise la fonction preg_replace, pour pouvoir afficher mes menus.
La boucle se fait bien, mais le souci c'est que je n'arrive pas a utiliser de fonctions dans ma fonction.
Pour faire plus clair, voici le code de test:
$str = '
<CW_MENUS>


#MENU_NOM


</CW_MENUS>
';

$chaine = preg_replace('#<CW_MENUS>(.+)</CW_MENUS>#sU',menu('$1'),$str);	
echo $chaine;

function menu($str){
$retour = "";

$sql = "SELECT * FROM cw_menus WHERE visible='1' ORDER BY ordre ASC";
$req = mysql_query($sql);

while ($data = mysql_fetch_assoc($req)){
$temp = str_replace('#MENU_NOM',$data['nom'],$str);
$temp = str_replace('#MENU_LIEN','http://www.aaaa.fr/'.$data['page_id'].'.php',$temp);
$temp = str_replace('#MENU_TITLE',$data['title'],$temp);
$retour .= $temp;
}

return $retour;
}


la fonction str_replace, n'est pas prise en compte et je ne comprend pas pourquoi.

Cordialement.
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11
3
Merci
Salut,

Tu n'utilises pas la bonne fonction. Jette plutôt un oeil du côté de preg_replace_callback()

Rappel : la fonction preg_replace() admet comme paramètre de remplacement une chaîne ou un tableau de chaînes, contenant éventuellement une référence \\n ou $n.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de neigedhiver
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
3
Merci
Salut Azumi,

la fonction str_replace, n'est pas prise en compte

Qu'est ce qui te laisse penser cela ?
La première chose à faire est de mettre en place des echo, print_r et autres var_dump afin de cibler le pb.
En faisant un "echo $str;" au tout début de ta fonction, tu t'apercevrais que $str n'a pas le résultat escompté, et pour cause, preg_replace n'accepte pas de fonction. Pour cela il y a preg_replace_callback()

<?php
$chaine = preg_replace_callback('#<CW_MENUS>(.+)</CW_MENUS>#sU', "menu",$str);

function menu($str){
  print_r($str); // $str[1] étant la string que tu attends

  // je te laisse le soin de continuer ...
}
?>



Cordialement,

Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
tu ne pouvais pas rester en week end plutôt que de me griller Neige ?




Kohntark -
Commenter la réponse de kohntark
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11
0
Merci
J'suis décalqué, 2 jours de déménagement du frangin, + 2x 6h30 de trajet...
Mais réveille toi, t'as répondu 14 minutes plus tard... rhalalalala...

Bon mais on s'en fout, hein, on fait pas la course...
Mais quand même... des fois, j'ai l'impression que tu me suis et que tu réponds justement là où je réponds...
Arf.

Cela dit, ta réponse est plus complète que la mienne, moi, j'ai eu grave la flemme...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Commenter la réponse de neigedhiver
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Mais quand même... des fois, j'ai l'impression que tu me suis et que tu réponds justement là où je réponds...
Arf.

on pourrait le croire c'est vrai, mais en fait c'est juste ma lenteur, et le fait que je ne réactualise pas toujours le thread avant d'y répondre.

promis je te gratte à la prochaine


Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
14
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
7 décembre 2009
0
Merci
mdr merci les gars ça marche impecable
Commenter la réponse de azumi13
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Je t'en pris, n'oublie pas de valider MA REPONSE
(et accessoirement celle de Neige )
afin de clore le sujet et que ça puisse profiter à tout le monde.


j'te l'avais dit Neige : "j'te gratte à la prochaine " !!!


Bonne soirée,


Kohntark -
Commenter la réponse de kohntark
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11
0
Merci
Mouarf, tu m'fais marrer... Je cherche pas la gloire, moi au moins... hum... hein, bon...


P.S. pour azumi : n'oublie pas de valider ma réponse, et si le coeur t'en dis, celle de Kohntark, mais bon, il a pas besoin de ça...


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Commenter la réponse de neigedhiver