Page 1 sur 1

Tableau et preg_replace...

Posté : 06 nov. 2007, 18:50
par FredoMkb
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 ;)

Posté : 06 nov. 2007, 18:58
par h0_noMan
$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>

Posté : 06 nov. 2007, 19:06
par FredoMkb
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 :)