kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005
-
17 nov. 2004 à 19:02
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005
-
18 nov. 2004 à 18:10
voila, je suis en train de bosser sur un site et j'ai besoin de faire une gestion de modeles, c'est a dire proposer plusieurs mises en pages, avec des styles differents
pour ca, je voudrais faire des fichiers main.tpl du style
et ensuite mon script recupere le style selectionne par le visiteur et modifie les (HEAD:xxx), (BODY:xxx) par le contenu a afficher
j'ai une fonction qui me genere tous les tableaux associatifs qui reprensent les blocs a remplacer : $HEAD, £BODY ...
j'ai donc par exemple :
$HEAD['NAME'], $HEAD['TITLE'], $HEAD['TAGS'] ......
il faudrai donc maintenant que je trouve une fonction qui me remplace les chaines (xxx:yyy) de main.tpl par l'element $xxx['yyy']
POINT IMPORTANT : la fonction ne doit pas appliquer ce remplacement a la chaine ajoutee
je m'explique : (je simplifie la notation)
supposons que main.tpl contienne (a)(b).
si je veux remplacer (a) par "nom" et (b) par "prenom", ca m'affichera "nomprenom" , ca c'est normal
maintenant si je remplace (a) par "(b) nom" on a 2 cas :
=> soit la chaine a remplacer est cherchee depuis le debut de la derniere chaine ajoutee : ca remplace deja (a) d'ou "(b) nom(b)", puis le 1er (b) d'ou "prenom nom(b)" puis le 2e (b) d'ou "prenom nomprenom" CA JE VEUX PAS !!!
=> soit la chaine a remplacer est cherchee a partir de la fin de la derniere chaine ajoutee : ca remplace deja (a) d'ou "(b) nom(b)" puis cherche depuis le premier caractere apres "nom" donc modifie le 2e (b) d'ou "(b) nomprenom" C'EST CA QUE JE VEUX !!!
En fait, j'utilise cette technique pour generer les differents blocs qui constitue la page affichee. Mon soucis c'est que mon site c'est une sorte de site commercial partage entre plusieurs commercants. chaque commercant gere ces produits et, par grande Malchance_avec_une_majuscule, si un commercant utilise dans un de ses textes, un de mes identifiants de mise en page, je ne veux pas qu'il soit traduit par la fonction en question. dans ce cas, le "faux" identifiant doit etre affiche tel quel.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 18 nov. 2004 à 18:10
je vais essayer de faire plus simple avec une notation + comprehensible :
j'ai une chaine contenue ds une variable, $original
elle contient des "identifiants" sous la forme (OLDx) et je veux faire les remplacements suivants :
(OLD1) => $new_1
(OLD2) => $new_2
........
(OLDn) => $new_n
où $new_x sont les variables qui contiennent les chaines a mettre a la place des (OLDx)
ce que je veux : si un $new_i contient, par malchance, un identifiant (OLDx) , il ne doit surtout pas etre traite.
si c'etai le cas, au mieux ca me bouffe la mise en page, pas top pour un site commercial
au pire, ca serai que ca provoque un bouclage : imagine que $new_1 contiennent (OLD1) ! le (OLD1) original serai remplace par $new_1 dont le(OLD1) serai remplace par $new_1 dont le (OLD1) ...... je m'arrete la :-)
bon, je sais ce que tu vas dire, il suffirai de filtrer les $new_x pour eviter les problemes, mais si il existe une fonction qui realise le traitement que je cherche ...... ce qui ne me dispense pas de filtrer dailleur ;-)
sinon pour le fonction ereg_replace, j'ai pas encore regarde. j'ai trouve un debut de magouille avec strtr alors je comparerais les performances apres :