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 :

[Système] Supprimer les balises php d'un texte


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [Système] Supprimer les balises php d'un texte
    Bonjour,

    Je suis en train de faire un système de template dans lequel les utilisateurs peuvent définir leurs propres designs en HTML/JS.
    Cependant, les templates étant intégrées dans des pages PHP qui seront mises en caches puis exécutées, j'ai besoin de m'assurer que ces templates ne contiennent pas de code PHP.


    J'aurais donc besoin de supprimer de manière sûre et certaine tout le PHP qui pourrait être contenu dans un texte.

    Voyez-vous une faille dans ce script ? Avez-vous mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Boucle jusqu'à ce que aucun remplacement ne soit nécessaire
    do
    {
       $data = preg_replace("@(<\?php|<\?|\?>|<script[ \t]+language[ \t]*=[ \t]*[\"']?php[\"']?[^>]*>)@i","",$data, -1, $nb);
    } while($nb != 0);
    Merci d'avance.
    Mad.

  2. #2
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Inutile de boucler avec do while. Par défaut, ça remplace le maximum possible. (fait des echo, tu devrais le constater)

    Ceci est juste un peu mieux, ça prend en compte les éventuels retours à la ligne pour la partie script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "@<\?php|<\?|\?>|<script\s+language\s*=\s*[\"']?\s*php\s*[\"']?[^>]*?>@i"

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Héhé, merci pour la réponse, mais si j'ai bouclé c'est qu'au début j'avais pas bouclé et que je suis arrivé à hacker mon truc en 30s en écrivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <<?php?php
       // some code
    ??>>
    Ce qui après regexp donne un bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
       // some code
    ?>

  4. #4
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Tu as raison ! ; )

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    En tout cas tu as trouvé une faille, on peut mettre des retours chariots dans la balise script donc je retiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    do
    {
       $data = preg_replace("@(<\?php|<\?|\?>|<script\s+language\s*=\s*[\"']?php[\"']?[^>]*>)@i","",$data, -1, $nb);
    } while($nb != 0);
    Quelqu'un d'autre voit encore une faille possible ou aurait une meilleure façon de faire ?

  6. #6
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    On peut mettre aussi des espaces (retours chariot etc) dans la valeur de l'attribut language non ?

    "php" ==> " php " etc

    Donc vaudrait mieux les virrer aussi

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai testé, et non ça ne passe pas

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/12/2010, 17h49
  2. [PHP 5.2] Comment supprimer les balise php mais pas les html
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 19/05/2009, 23h28
  3. Supprimer les balises HTML d'un texte
    Par bellig dans le forum SQL
    Réponses: 3
    Dernier message: 04/01/2008, 17h00
  4. Supprimer les balises d'un texte
    Par SimoX1 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/03/2007, 11h40
  5. [RegExp] Parser les balises PHP
    Par ePoX dans le forum Langage
    Réponses: 6
    Dernier message: 19/02/2006, 18h34

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