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 :

Preg_replace et include


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Par défaut Preg_replace et include
    Bonsoir, voici mon problème :

    dans un texte, je veux pouvoir mettre des balises du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script_php>chemin/vers/le/script.php</script_php>
    et utiliser la fonction preg_replace, ou preg_replace_callback peu importe pour remplacer ce BBcode par le contenu du fichier php, évalué.

    Cela fonctionne partiellement... En effet en utilisant directement la fonction include, sans passer par preg replace, l'inclusion est parfaite, mais en utilisant preg_replace, le javascript est passé en CDATA, les balises de style ne sont pas prises en compte... bref la misère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('#<script_php>(.*)</script_php>#uie',"include('$1')", $monText)
    Ca fait quelques jours que j'essaye de trouver des solutions, mais sans succès, quelqu'un a t il déjà eu ce problème ?

    Merci

    EDIT : Une solution proposée a été d'utiliser la fonction 'eval' d'une manière bricolée, mais cela ne fonctionne pas vraiment pour ma part, pourtant cela devrait... voici l'idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $monTextAvecBBcode = '...';
    $monTextAEvaluer = preg_replace('#<script_php>(.*)</script_php>#iu',"<?php include('$1'); ?>", $monTextAvecBBcode);
    echo eval('?'.'>'.$monTextAEvaluer.'<'.'?'.'php');
    L'intérêt de placer des balises fermantes et ouvrantes respectivement au début et la fin du texte permettrait justement de ne pas interpréter la partie de la chaine de caractères située en dehors des balises php que nous avons placées grâce au preg_replace, puisque l'ensemble de la chaine est considérée comme du code php par eval.

  2. #2
    Membre confirmé Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Par défaut
    Bon, j'ai trouvé la solution, je vais pouvoir conclure mon monologue

    Il se trouve que le doctype de la page, pour une raison que j'ignore encore, créait des différences d'affichage selon que l'inclusion se faisait grace à preg_replace, ou normalement avec un simple include.
    Je suis bien conscient que le doctype est là pour imposer un comportement pour l'affichage de la page, mais dans mon cas, le code html produit était le même quelquesoit la manipulation... Enfin il me semble...

    Je détaille :
    en gros sans doctype, le comportement de l'affichage est aléatoire : Quirk mode, comportement fidèle à celui des anciens navigateurs. J'étais en "semi quirk mode", et j'ai changé le doctype pour un standard strict, et voilà mon problème résolu.
    http://hsivonen.iki.fi/doctype/

    Malgré cette trouvaille, si quelqu'un a une explication pour ce phénomène, je suis preneur !
    Merci

Discussions similaires

  1. [Débutant][Application web] : web.xml + includes jsp
    Par silver_dragoon dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/02/2004, 21h46
  2. Problème d'include sous Dev-c++ 4.9.8.0
    Par Argonz dans le forum Dev-C++
    Réponses: 16
    Dernier message: 20/11/2003, 18h36
  3. include
    Par ronald dans le forum ASP
    Réponses: 11
    Dernier message: 06/11/2003, 15h30
  4. INCLUDE non exécuté
    Par Sadneth dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2003, 01h44
  5. #include "math.h" et #include <math.h>
    Par pounka dans le forum C
    Réponses: 4
    Dernier message: 01/05/2003, 22h06

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