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 :

[RegExp] Parser les balises PHP


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut [RegExp] Parser les balises PHP
    Salut,

    Je pensais mon problème assez simple, mais pas pour moi

    bref, j'essaie de parser les balises d'un fichier php.

    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
    function test( $matches )
    {
        var_dump($matches);
        echo "<br/>";
        echo "<br/>";
    }
     
    $avertissement = '<?
    class Billet extends BilletAnonyme
    {
    	
    	public function __construct()
    	{
    		parent::__construct( );
    	}
    	      
    	public function __get( $prop )
    	{
    		switch($prop)
    		{
    			default:
    				return parent::__get( $prop );
    			break;
    		}
    	}
    	
    	public function __set( $prop , $value )
    	{
    		switch($prop)
    		{
    			default:
    				return parent::__set( $prop , $value );
    			break;
    		}
    	}
    }
    ?> dsqf df sdf sdf sdf sddf sfd <? sdf sdf  ?>';
     
     
    $test = preg_replace_callback( "`<?([^>.]*)?>`si", "test" , $avertissement );
     
    ?>

    Ma regexp fonctionne presque.. sauf qu'elle ne récupère pas tout les blocs.. Notamment le dernier :/

    Auriez vu une idée ?

    Merci bye

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Peut-être en échappant le point d'interrogation ?

    [Edit] Je me demandais : pourquoi as-tu mis un point dans ta classe négative ?
    Sinon, je vois un souci éventuel : je ne crois pas que les PCRE permettent de négativer en utilisant plusieurs caractères (ce qui est le cas pour toi, tu ne veux pas sortir de la regexp quand elle matche '>' mais '?>'), ce qui fait que n'importe quel tag HTML te fera sortir de la regexp :/
    J'imagine que tu n'inclus pas de présentation dans ton PHP donc pas de souci
    C'était une simple remarque pour noter un éventuel bug complètement exotique que tu pourrais rencontrer un de ces jours...

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Peut-être en échappant le point d'interrogation ?
    Euf euh oui surement
    Le fait est que je débute complètement et je fais sa un peu au pif avec mon doigt levé entestant la direction du vent

    Sinon, je vois un souci éventuel : je ne crois pas que les PCRE permettent de négativer en utilisant plusieurs caractères (ce qui est le cas pour toi, tu ne veux pas sortir de la regexp matche '>' mais '?>'), ce qui fait que n'importe quel tag HTML te fera sortir de la regexp :/
    Tu soulèves la un problème qui me fait dire que je peut oublier les regexp, non ?

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Non, ne sous-estime pas les regexp !
    Il faut simplement demander à quelqu'un plus au point que moi sur le sujet, ça devrait pas être trop difficile à trouver. Il me semble justement qu'une telle personne est passée ici hier ou avant-hier...

    Dans l'idée, il s'agirait de mettre des parenthèses autour de ?>, seulement, je ne crois pas qu'il soit possible de le faire dans une classe : [^(?>)]...


    [Edit]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    if(preg_match_all('/(<\?php|<\?)(.*)\?>/U', '<?azert ?><?php ouy ?>', $matches, PREG_SET_ORDER)){
       echo '<pre>';
       print_r($matches);
       echo '</pre>';
    }
     
    ?>

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    A trop fort :p

    Entre temps j'avais trouvé c elui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `<\?((?:(?!\?>).)*)\?>`is'
    Sa correspond à quoi l'option U ?

    Merci

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Rofl t'abuses :/
    C'est tout dans la doc... Essaie avec et sans le modificateur U, je pense que tu verras la différence.
    Faut montrer l'exemple, l'ami !

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    ok ok

    En tout cas merci sa m'à enlevé une belle épine du pied :p

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] PB pour parser les balises namespace
    Par Tigrou35 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/07/2007, 18h24
  2. problème avec les balises php
    Par Mydriaze dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2007, 13h09
  3. InnerHTML et les balises php(<? ?>)
    Par karimphp dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 16/03/2007, 12h43
  4. [Système] Supprimer les balises php d'un texte
    Par madcorp dans le forum Langage
    Réponses: 6
    Dernier message: 04/03/2007, 17h48
  5. variable contenant les balises <?php ?>
    Par karimphp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/12/2006, 13h31

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