Général
- Présentation
- Les Symboles
- Les Métacaractères
- Les Ancres et Classes
- Les options
- Constantes prédéfinies
- Equivalences
- Créer un motif
- Les POSIX
- Les PCRE
- Les Plus des PCRE
- Les Assertions Part I
- Les Assertions Part II
- Motif conditionnel
- Mysql et les regex
- Url Rewriting
- Optimisation
- Aide mémoire
Les PCRE
Les POSIX
Pratique
Linux
Spécial php
- Conseils et Astuces
- Délimiteur PCRE
- Créer une bdd
- Utiliser du BBcode
- Le binaire
- Faire un panier
- Cases à cocher
- Citations imbriquées
- Colorateur syntaxique
- Les list-box ou combo-box
- Faire un diaporama
- Isset ou empty ?
- Une légende au survol
- Site en plusieurs langues
- Requêtes dynamiques
- Gestion des smiley
- Faire un moteur de template
- Timestamp php/mysql
- Timestamp mysql
- Matcher une adresse email
- Controler des données
Les billets de fred
- Les POSIX... mise en pratique !
- Limiter l'accès à un répertoire
- Alternance de couleurs
- Magic_quotes
- Désactiver les short_tags
- Require ou include : Bench
- Cohérence dans les chaines de caractères
- "echo" : lapin ou tortue ?
- Gérer un formulaire avec plusieurs boutons
- Le formulaire a t'il été soumis ?
- J'ai décidé de grossir
- La guerre des étoiles
- La guerre des boutons
- Headers already sent
- IP, IP, IP, houra !
- Créer un itérateur avec PHP5
- On vous conduit vers la lumière
- Comment utiliser MySQL avec PHP
- Non aux booléens !
- Php.ini : dist /recommended
- Include : gouffre ou fêlure ?
- Simple comme les sessions !
- Simplifier le traitement des erreurs
- Structurez vos applications
- Franchement, t'es trop for !
- Notice: Undefined variable (ou index)
- Proscrire les variables auto déclarées
Un colorateur syntaxique en pratique !
Vous pouvez trouver une approche simplifiée d'un colorateur dans la page concernant la fonction preg_replace_callback(); >>> preg_replace_callbackBon alors on y va, je vous présente le colorateur syntaxique utilisé sur expreg.
Il est légèrement modifié et ne présente pas la conversion en lien vers la doc pour les fonctions PHP utilisées.
<?php
function color_expreg($code) {
$comments='#FF8000';
$defaut='#0000BB';
$motcle='#007700';
$chaine='#DD0000';
$tablo = preg_split('`(<code>.*</code>)`Uis', $code, -1, PREG_SPLIT_DELIM_CAPTURE );
foreach($tablo as $val)
{
if(preg_match('`<code>.*?</code>`Uis', $val))
{
$val=str_replace(array('<code>','</code>'),array('',''),$val);
$str = highlight_string($val, TRUE);
$ret = '<div class="colorise">'.$str.'</div>';
// créez dans votre CSS une classe colorise ou une autre de votre choix
$in = array(
'`</?code>`i',
'`<font color="' . ini_get('highlight.html') . '">(.+)</font>`si',
'`<font color="' . ini_get('highlight.comment') . '">(.+?)</font>`si',
'`<font color="' . ini_get('highlight.default') . '">(.+?)</font>`si',
'`<font color="' . ini_get('highlight.keyword') . '">(.+?)</font>`si',
'`<font color="' . ini_get('highlight.string') . '">(.+?)</font>`si',
'` `si'
);
$out = array(
'',
'$1',
'<span style="color:'.$comments.'">$1</span>',
'<span style="color:'.$defaut.'">$1</span>',
'<span style="color:'.$motcle.'">$1</span>',
'<span style="color:'.$chaine.'">$1</span>',
' '
);
$sortie[] = preg_replace($in, $out, $ret);
}
else
{
$in = array(
'`</(u|b|i)>`',
'`<((http|https|ftp)://.*?)>`i',
'`<b *>([^<]+)`si',
'`<i *>([^<]+)`si',
'`<u *>([^<]+)`si',
'`>>\s?(.*?)<<`si'
);
$out = array(
'</span>',
'<a href="$1" target="_blank"><b>$1</b></a>',
'<span class="bb">$1',
'<span class="ii">$1',
'<span class="uu">$1',
'<br /><div class="citation"><span class="u">Je cite :</span>
<br /><br /><span class="i">$1</span></div>');
// créez dans votre CSS une classe bb, ii, uu, citation ou autres
// en modifiant légèrement vous pouvez également
// utiliser le balisage standardisé strong, em, etc...
$sortie[] = preg_replace($in, $out, nl2br(htmlentities($val)));
}
}
return implode('', $sortie);
}
?>
Pour l'appeler, il suffit de faire : echo color_expreg(stripslashes($_POST['code']));
Il est bien évident que ce colorateur est adaptable à vos config perso. Suffit de le modifier là où il faut.
Si vous utilisez le fumeux BBcode, je vous laissse le soin de remplacer les balises <code> par les vôtres.
