Highlight html : colorisation de code html

0/5 (4 avis)

Snippet vu 4 945 fois - Téléchargée 29 fois

Contenu du snippet

C'est simplement une petite class qui permet de coloriser du code HTML.

Source / Exemple :


<?php
class highlight_html
{
 var $color_base = '#000000'; //Couleur du texte hors-balises
 var $color_coms = '#008000'; //Couleur des commentaires et scripts
 var $color_tags = '#000099'; //Couleur des tages (a, div, span, img, table...)
 var $color_dels = '#000099'; //Couleur des delimiteurs < et >
 var $color_atts = '#FF9900'; //Couleur des attributs (href, src, class, style...)
 var $color_vals = '#0000FF'; //Couleur des valeurs d'attributs
 
 var $option_egal = TRUE;     //Défini si le = prend la couleur de l'attribut, et les " la couleur de la valeur
 var $option_nl2br = TRUE;    //Défini si les retours de lignes doivent être remplacés par des <br />

  function color_tags($cod)
  {
   $mask = "#([a-zA-Z0-1\-_]+)=(('|\")|)(.*?)(?(3)(\\3)|( |>))#si";
   if (!$this->option_egal) $repl = "<span style='color: {$this->color_atts}'>\\1</span>=\\3<span style='color: {$this->color_vals}'>\\4</span>\\3\\6";
   if ($this->option_egal) $repl = "<span style='color: {$this->color_atts}'>\\1=</span><span style='color: {$this->color_vals}'>\\3\\4\\3</span>\\6";
   return preg_replace($mask,$repl,$cod);
  }

  function int_html($match)
  {
   $bals = array('script','style');
   if (empty($match[2])) $match[2] = '';
   $ends = "<span style='color: {$this->color_base}'>";
   return "</span><span style='color: {$this->color_dels}; font-weight: bold'><</span><span style='color: {$this->color_tags}; font-weight: bold'>$match[1]</span>".substr($this->color_tags($match[2]),0,-1)."<span style='color: {$this->color_dels}; font-weight: bold'>></span>".$ends;
  }
  
  function color_html($code)
  {$code = str_replace('<','<',$code);
   $code = str_replace('<!--',"</span><span style='color: {$this->color_coms}'><!--",$code);
   $code = "<span style='color: {$this->color_base}'>".preg_replace_callback("#<(/a-zA-Z0-9!\?+)(( [^>]*)?>)#si",array(&$this,'int_html'),$code)."</span>";
   if ($this->option_nl2br) $code = nl2br($code);
   return $code;
  }
}
?>

Conclusion :


Après on l'utilise simplement comme ceci:

<?php

$high = new highlight_html; //Nouvelle instance de la class
$page = file_get_contents('page.html'); //On charge une page html
echo $high->color_html($page); //Colorisation du code HTML

?>

A voir également

Ajouter un commentaire Commentaires
DHKold
Messages postés
153
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
29 mai 2005
2
11 juin 2004 à 00:04
highlight_string et highlight_file colorient le code php, moi ca colorie le html ;)
francois62
Messages postés
2
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
18 juin 2006

10 juin 2004 à 16:43
La source est sympa pour exercie mais je crois bien que highlight_string() et highlight_file() font la même chose
DHKold
Messages postés
153
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
29 mai 2005
2
8 juin 2004 à 18:45
Pourquoi pas, seulement je ne vois pas trop comment, sauf si tu veux afficher les balises parsées en les coloriant :p
LocalStone
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

8 juin 2004 à 16:35
Tiens, je sais pas si ça peut t'interresser, mais regarde cette source made-in-moi : http://www.phpcs.com/code.aspx?ID=18901.
Faudrait combiner nos deux sources et on pourrait faire un truc d'enfer. Enfin, je dis ça comme ça :)
++
LS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.