[PHP]Les expressions régulières

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. Webmaster
    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.
    1. 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

      <(.+)>