8800 sujets

Développement web côté serveur, CMS

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>
	<div style="border: 1px solid #3b3b3b; margin-top: 20px; width: 100px;">
		<a href="#MENU_LIEN" title="#MENU_TITLE">#MENU_NOM</a>
	</div>
</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.
Salut,

C'est pas la bonne fonction alors forcement ça va pas le faire. Je sais pas si tu t'en rend compte mais quand tu fait menu('$1') va donné "$1" à la fonction et non une référence sur un bout de chaine, bon bref va voir ici preg_replace_callback

Au passage y a aussi str_replace mais ce n'est plus des expressions régulière alors toutes les occurrences trouvés sont remplacés.