IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Créer un engin de template gérant les conditions


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 116
    Par défaut Créer un engin de template gérant les conditions
    Bonjour,

    Je travail actuellement à la réalisation d'un petit engin de templates assez basic dont j'aimerais ajouter la gestion des conditions, par exemple [IF ...] [ELSEIF ...] [ENDIF].

    J'ai essayé de procéder avec les regex, cependant les problèmes apparaîssaient dès que j'avais plus d'un ELSEIF, j'ai donc décidé de m'orienter vers la manipulation de string. Présentement, je reçois la position de la fin de [IF par exemple, cependant je n'arrive pas à "deviner" le nombre de caractère à lire. Il faudrait que je sois en mesure d'analyser chaque caractères entre [IF et ] afin de récupérer cette valeur.

    J'aimerais donc savoir s'il y a des personnes ici avec une certaine expérience dans ce genre de manipulation pouvant m'aider.

    Voici mon code pour le moment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str = 'Some validations [IF TEST]<a href="text.html">firstValue</a>[ELSEIF TEST1]secondValue[/IF] in [/IF in [IF OK]thirdValue[/IF] end of string.';
     
    $pos = strpos($str, '[IF ');
    Si vous connaissez des méthodes plus appropriées pour arriver au bon résultat, je suis tout ouïe.

    Merci d'avance !

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 174
    Par défaut
    Et pourquoi tu fais pas différents templates en fonction des résultats attendus ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 116
    Par défaut
    Je ne suis pas sur de comprendre... Je fais bel et bien un template par page, cependant mon module de template doit pouvoir gérer les conditions...

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 174
    Par défaut
    Et pourquoi tu ne fais pas directement du php dans ton template alors ??

    Peut être plus simple non ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 116
    Par défaut
    Le but par mon engin de template est de bien séparer les unités logiques des unités visuelles. Comme je ne serai pas le seul à faire des templates, mais que je serai le seul à gérer les informations contenues dans ces templates, je dois créer un système permettant à mes collègues de créer facilement des interfaces graphiques avec un minimum de code.

    Par la suite, je pourrai recréer ces templates en fonction des données qu'ils auront inscris. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <title>{SITE_NAME}</title>
    Malgré que ce soit du HTML simple, je devrai créer le fichier php qui alimentera le {SITE_NAME} afin d'afficher la bonne valeur.

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Pour les scripts de template que j'ai eu loisir à regarder jusqu'à maintenant c'est en fait un script PHP qui est généré puis évalué.
    Donc simplement une regex pour remplacer le "pseudo-code" du template en équivalent PHP.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 116
    Par défaut
    Le soucis avec mon regex c'est qu'il ne gèrait pas les multiples "else if".

    Le voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /\[IF (.*?)\](.*?)(\[\/IF\]|\[ELSEIF(.*?)\](.*?)\[\/IF\])/i

  8. #8
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Il manque surement un espace après le ELSEIF ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /\[IF (.*?)\](.*?)(\[\/IF\]|\[ELSEIF (.*?)\](.*?)\[\/IF\])/i

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 116
    Par défaut
    Citation Envoyé par Simdu80 Voir le message
    Il manque surement un espace après le ELSEIF ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /\[IF (.*?)\](.*?)(\[\/IF\]|\[ELSEIF (.*?)\](.*?)\[\/IF\])/i
    Effectivement, cependant, cela ne règle pas la non-gestion des ELSEIF multiples

Discussions similaires

  1. Réponses: 12
    Dernier message: 12/04/2010, 17h27
  2. Réponses: 1
    Dernier message: 22/12/2008, 09h16
  3. algo de tri gérant les exaequo
    Par tomy29 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 13/10/2005, 13h54
  4. [VB.Net] DataGrid - Templates columns et condition
    Par pmithrandir dans le forum ASP.NET
    Réponses: 7
    Dernier message: 18/07/2005, 17h30
  5. Réponses: 7
    Dernier message: 21/05/2004, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo