[PHP]Les expressions régulières

Profil bloqué -  
Jean-François Pillou Messages postés 19541 Statut Webmaster -
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.
A voir également:

2 réponses

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
Jean-François Pillou Messages postés 19541 Statut Webmaster 63 278
 
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