[PHP]Les expressions régulières

Profil bloqué -  
Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   -
Bonjour,

je code en PHP une colorisation syntaxique du html.
Jusqu'ici tout va bien
Mais, je suis confronté à un problème qui me rend fou.
Lorsque je cherche à colorer les balises, la regex n'est pas prise en compte.
Par exemple:


function colorer($code) 
{ 
$code_regexp = preg_replace('#</?.+>#iU','<span style="color:red">$0</span>',$code); 
return $code_regexp; 
} 
echo colorer($code); 


Idem pour les attributs.
Une solution?

Merci.

2 réponses

  1. maka54 Messages postés 721 Statut Membre 80
     
    function colorer($code)  
    {  
    $code_regexp = preg_replace(''<(.+)>'isU','<span style="color:red">$0</span>',$code); 
    return $code_regexp;  
    }  
    echo colorer($code); 


    si ce sont bien les crochets qui determine le preg_replace, essayes comme çà

    edit les quote du alt Gr + 7 n'ont pas été pris en compte, il faut les mettre entre

    <(.+)>
    0
  2. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Ta regexp n'est pas bonne, car ta regexp commence à la première ouverture de balise et s'arrête à la dernière fermeture de balise.

    Tu ferais mieux d'injecter l'attribut style dans les balises ouvrantes :

    function colorer($code) 
    { 
    $code_regexp = preg_replace('#(<(?!/)[^>]+)>#is','$1 style="color:red">',$code); 
    return $code_regexp; 
    } 
    echo colorer($code); 


    Après on peut aller plus loin, mais probablement avec des callbacks.
    0