RegEx : probleme de pattern

RegEx : probleme de pattern - PHP - Programmation

Marsh Posté le 14-08-2008 à 12:08:28    

Bonjour  
dans un template HTML
j'ai des tags au format "{TAG}" que je remplace en PHP par des valeurs.
Ca rejoint un peu la manière deSmarty...
dans le meme principe dans un template XSL les tags sont au format "(TAG)"
car les accolades sont valides.
 
dans mon moteur de template afin d'uniformiser les délimiteurs, les ( ) doivent etre remplacés
par des { }.
Mais ca pose un probleme car je voudrais que ce remplacement ne se fasse que sur ce motif précis
afin d'éviter de remplacer les ( ) des fonctions javascript présentes dans les template
 
j'ai essayé quelque chose comme :
preg_replace("\([A-Z]\)", "\{[A-Z]\}", $templateString)
Résultat : le motif est trouvé, mais ca me remplace tous les TAGS par "([A-Z])" au lieu de la valeur prévue.
 
Voyez vous ce que je veux dire ?
Je suis pas tres a l'aise avec les regEx.
Comment je peux faire ?
 
merci


Message édité par jokaritaff le 14-08-2008 à 12:09:38
Reply

Marsh Posté le 14-08-2008 à 12:08:28   

Reply

Marsh Posté le 14-08-2008 à 12:11:49    

Dans le deuxième c'est $1 qu'il faut mettre à la place de [A-Z], pas la même chose [:prozac] Et capture le tag aussi
 
Genre :

Code :
  1. preg_replace('/\(([A-Z]*)\)/', '{$1}', $string)

Reply

Marsh Posté le 14-08-2008 à 12:20:12    

ben justement je me disais que ca serait bien de pouvori récupérer la valeur du motif qui a été trouvé : donc {$1}
merci
 
par contre ca uniformise bien, mais les () de mes fonctions Javascript sont  aussi remplacées...

Reply

Marsh Posté le 14-08-2008 à 12:21:55    

Ouais là ça va être un peu plus galère. Mais de toute manière t'es pas censé avoir de JS dans la page, mais dans des fichiers séparés ;)

Reply

Marsh Posté le 14-08-2008 à 12:22:55    

ouep mais c pour du test rapide
 
Cependant meme hors test : ok pour mettre tout le JS dans un fichier séparé
mais pour appeler les fonctions Js depuis du HTML ou XSL comment je fais ?
utiliser uniquement des obj.addEventListener() ?

Message cité 1 fois
Message édité par jokaritaff le 14-08-2008 à 12:25:25
Reply

Marsh Posté le 14-08-2008 à 12:30:32    

jokaritaff a écrit :

utiliser uniquement des obj.addEventListener() ?


Ouaip. Pourquoi ne séparer que la présentation du contenu (CSS/HTML) ? Pourquoi ne pas aussi séparer le comportement ? :)

Reply

Marsh Posté le 14-08-2008 à 13:05:23    

et bien c'est exactement ce que je compte faire a terme.
mais autant le faire tout de suite.
 
par contre j'ai un souci avec addEventListener :
si je fais un  
window.onload = document.getElementById(myobject.id).addEventListener('click', myFunction(), false)
dès le chargement de la page, myFunction() est executé alors qu'il n'ya eu aucun evenement 'onClick'....

Reply

Marsh Posté le 14-08-2008 à 14:13:29    

onload doit être une fonction, pas un appel direct comme ça :

Code :
  1. window.onload = function() {
  2.   document.get....
  3. }


 
Et mieux, faut appeller un addListener sur window pour faire ça bien. Utilise une lib pour faire tout ça, genre jQuery, YUI, prototype, etc.

Reply

Marsh Posté le 14-08-2008 à 14:23:21    

ouais on va utiliser YUI comme lib JS.
ca sera plus simple et pus propre

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed