Tableau et preg_replace...

Eléphant du PHP | 224 Messages

06 nov. 2007, 18:50

Bonjour à tous :)

Voici mon petit souci du jour...

J'ai un tableau associatif contenant, par exemple, une liste de selecteurs de style CSS :
$styles['css1'] = 'premier';
$styles['css2'] = 'deuxieme';
$styles['css3'] = 'troisieme';
Je voudrais remplacer, dans un code Html, toutes les pseudo-balises "<:cssN:>" par la valeur correspondante issue du tableau de styles, voici un exemple de code Html :
$contenu = '<div class="<:css2:>">
<p class="<:css1:>">Texte</p>
<p class="<:css3:>">Texte</p>
</div>';
Donc, je me suis dit qu'un simple "preg_replace" devrait faire l'affaire... voici une des pistes que j'ai exploré :
preg_replace("#<:(\w+):>#", $styles['$1'], $contenu);
echo $contenu;
Bon, ça ne marche pas :( ... j'ai donc essayé autre chose, que voici :
function get_item($item) {
	global $styles;
	return $styles[$item];
}
preg_replace("#<:(\w+):>#e", "get_item('$1')", $contenu);
echo $contenu;
Bon bein... pas mieux que la première piste :(

La solution ne doit sûrement pas être bien difficile, mais là :shock: je bloque :?

Un petit coup de pouce serait le bienvenu ;)

Merci à tous :)
OUPS :roll:

Ne tappez pas :shock:

J'ai oublié de mettre une variable devant le "preg_replace" :
function get_item($item) {
	global $styles;
	return $styles[$item];
}
$contenu = preg_replace("#<:(\w+):>#e", "get_item('$1')", $contenu);
echo $contenu;
Bon, je crois que je ferai mieux d'aller pioter un peu là :lol:

Désolé pour le bruit ;)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Eléphant du PHP | 445 Messages

06 nov. 2007, 18:58

$actual_code = '<div class="<:css2:>"><p class="<:css1:>">Texte</p><p class="<:css3:>">Texte</p></div>'; 

$replace = array("<:css1:>","<:css2:>","<:css3:>");
$by = array("style1","style2","style3");
echo str_replace($replace,$by,$actual_code);
Affiche

Code : Tout sélectionner

<div class="style2"><p class="style1">Texte</p><p class="style3">Texte</p></div>

Eléphant du PHP | 224 Messages

06 nov. 2007, 19:06

Merci h0_noMan pour ta réponse :)

J'avais en effet aussi pensé au "str_replace", mais en réalité mon code de travail est un peu plus complèxe que ce que j'ai exposé ici... en fait, j'avais bêtement oublié de récupérer le résultat dans une variable... cherches pas, dès fois, la fatigue aidant, on crée les problèmes soi-même... :shock:

Merci quand-même pour ta réponse :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)