azumi13
Messages postés14Date d'inscriptionlundi 22 octobre 2007StatutMembreDernière intervention 7 décembre 2009
-
7 déc. 2009 à 17:08
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 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.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 7 déc. 2009 à 18:44
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à ;)
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 7 déc. 2009 à 18:58
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 ...
}
?>
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 7 déc. 2009 à 19:03
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à ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?