Cherche a faire du remplacement de texte

Résolu
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005 - 17 nov. 2004 à 19:02
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 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

<html>
<head>
<title>(HEAD:NAME) : (HEAD:TITLE)</title>
(HEAD:TAGS)
</head>....................

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.

j'esperes avoir ete clair :-)

pouvez vous m'aider ????

merci d'avance

2 réponses

ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
18 nov. 2004 à 14:18
salut

je suis pas sur d'avoir saisi exactement ce que tu veut...

Mais je vais quand meme essayer :big)

est-ce une fonction comme ca que tu cherche :

ereg_replace

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
3
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 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 :

$tab = array(
"(HEAD:NAME)" => SITE_NAME,
"(HEAD:TITLE)" => SITE_TITRE,
"(HEAD:CSS)" => $_SESSION['User']['CSS'],
......);

$page = strtr($page, $tab);

ca a l'air de marcher comme je veux mais je vais qd meme etudier ta soluce
0
Rejoignez-nous