[PHP]Les expressions régulières

Fermé
Profil bloqué - 25 juin 2010 à 11:08
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 - 25 juin 2010 à 11:27
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 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 25/06/2010 à 11:22
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
25 juin 2010 à 11:27
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