C'est tout ?
Non ! GeSHi permet de faire des choses plus poussées.
En une fonction !
Sachez qu'au lieu de retenir toutes ces fonctions, GeSHi permet de les regrouper en une seule (bah oui, c'est tellement plus pratique...).
Mais à quoi servait l'autre code, alors ? Il créait un objet indispensable pour les fonctions telles que les numéros de lignes, le changement de couleur... mais si vous ne comptez pas les utiliser, utilisez cette fonction courte.
La fonction est :
geshi_highlight() 
! Voici son usage :
Code : PHP | <?php
geshi_highlight($source, 'php', $path);
?>
|
$source : toujours la même variable, pour le code.
'php' : à remplacer bien sûr si vous voulez un autre langage.
$path : c'est le chemin vers le fichier de définition ; vous n'avez rien à faire, laissez-le tel quel.
Si on reprend le même exemple qu'avant avec ces fonctions... :
Code : PHP | <?php
include_once('geshi.php');
$source = '$mavariable = "fichier.php";
include($mavariable);';
geshi_highlight($source, 'php', $path);
?>
|
Vachement plus simple, hein ? Et tant que vous y êtes, sachez que vous pouvez garder le code coloré dans une variable, au lieu de retaper le code à chaque fois. Comment ?
Code : PHP | <?php
$code = geshi_highlight($source, 'php', $path);
?>
|
Et voilà, je n'ai plus qu'à utiliser
$code au lieu de retaper toute la fonction la prochaine fois. Pas mal, hein ?
Changer le conteneur
Le conteneur ? Bah oui, les balises situées autour du code. Par défaut, GeSHi utilise
<pre> pour les codes créés avec la première méthode ; cette balise permet d'éviter de rajouter plein de
pour les espaces et des
<br /> pour les sauts de ligne. Grâce à cette technique, vous économiserez donc de la place (on va dire 0,001 %

), mais aussi de la bande passante et du temps de chargement pour les visiteurs. L'inconvénient ? Cette balise a des problèmes pour être stylée (couleurs, fonds...).
La seconde méthode (avec la fonction unique), elle, utilise la balise
<code>, qui a elle aussi ses avantages. Mais des inconvénients également : le principal étant qu'il s'agit d'un élément en ligne, et que ça fait plein de
<br /> en plus.
Bref, vous voulez un
pre, un
div ou rien autour ? GeSHi vous laisse choisir :
Code : PHP | <?php
$geshi->set_header_type(GESHI_HEADER_DIV);
$geshi->set_header_type(GESHI_HEADER_PRE);
$geshi->set_header_type(GESHI_HEADER_NONE);
?>
|
GESHI_HEADER_DIV, GESHI_HEADER_PRE et GESHI_HEADER_NONE sont des constantes, donc ne les mettez pas en chaînes (avec des ' autour) !
Les numéros de ligne
Les numéros de ligne ne fonctionnent qu'avec la structure complète, et non avec la fonction courte !
GeSHi vous permet d'utiliser des numéros de ligne, ce qui est particulièrement pratique. Vous pouvez utiliser plusieurs styles :
- GESHI_NORMAL_LINE_NUMBERS — Activer les numéros de ligne ;
- GESHI_FANCY_LINE_NUMBERS — Activer les numéros de ligne colorés ;
- GESHI_NO_LINE_NUMBERS — Désactiver les numéros de ligne (par défaut).
Les numéros de ligne colorés ? Je m'explique : avec les numéros de ligne normaux, les lignes auront toutes le même style. Avec les numéros colorés, le style change toutes les X lignes.
Pour changer le style :
Code : PHP | <?php
$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
?>
|
Si vous voulez utiliser les lignes colorées, vous devez mettre ceci :
Code : PHP | <?php
$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 8);
?>
|
C'est quoi, le nombre après ? C'est le « X » : si vous le réglez à 8, alors la couleur changera toutes les 8 lignes, le régler à 2 le fera changer de couleur toutes les lignes. Vous pouvez aussi ne pas mettre de numéro : à ce moment-là, il sera réglé par défaut à 5.
Changer les styles
Maintenant que vous avez mis des numéros de ligne colorés ou non, comment les... colorer ?

Avec
set_line_style().
Code : PHP | <?php
$geshi->set_line_style('color: #fcfcfc;');
?>
|
Vous devez alors tout simplement mettre une propriété CSS qui définira le style du n
o de ligne.. Si vous utilisez les balises colorées, vous devez mettre la couleur des lignes secondaires après une virgule :
Code : PHP | <?php
$geshi->set_line_style('background: #fcfcfc;', 'background: #f0f0f0;');
?>
|
Si on prend cet exemple :
Code : PHP | <?php
$coordonnees = array (
"Prénom" => "François",
"Nom" => "Dupont",
"Adresse" => "3, rue du Paradis",
"Ville" => "Marseille");
echo '<pre>';
print_r($coordonnees);
echo '</pre>';
?>
|
donnera ce résultat :
Changer les couleurs des fonctions
Tout comme les numéros de ligne, les changements de couleur ne fonctionnent qu'avec la structure complète et non avec la fonction courte.
Vous n'aimez pas les couleurs par défaut ? Il est possible de les changer. Malheureusement, cela est un peu compliqué :
Code : PHP | <?php
$geshi->set_keyword_group_style($groupe, $style);
?>
|
Oui, il faut un groupe... et là, ce n'est pas très pratique, car il faudra regarder dans le fichier de définitions quel groupe équivaut à quoi. Par exemple, en PHP (les groupes 1, 2 et 3 sont similaires dans la plupart des autres langages) :
- groupe 1 : fonctions de contrôle (if, else, include, while, require, switch...) ;
- groupe 2 : données par défaut et paramètres (null, <?php, true, false, E_ERROR...) ;
- groupe 3 : toutes les fonctions incluses dans PHP ;
- groupe 4 : certains types de données et modificateurs de variables (static, double...).
Imaginons donc que vous voulez changer la couleur des fonctions par défaut en rouge avec fond noir (

) :
Code : PHP | <?php
$geshi->set_keyword_group_style(3, 'color: #FF0000; background-color:#000000');
?>
|
Donnera :
Voilà pour les fonctions de bases. Mais certaines choses ne sont pas dans la liste...
Mais alors, comment faire pour modifier les couleurs des signes, commentaires... ?
Chaque chose a sa méthode :
Code : PHP | <?php
$geshi->set_comments_style($nombre_lignes, $style);
?>
|
Pour modifier la couleur des commentaires.
$nombre_lignes équivaut au nombre de lignes utilisables pour ce type de code : réglez-le sur 1 pour une seule ligne (
// et
#), ou sur
'MULTI' pour les commentaires multi-lignes (
/* de ce style
*/).
Code : PHP | <?php
$geshi->set_symbols_style($style);
$geshi->set_strings_style($style);
$geshi->set_numbers_style($style);
?>
|
Pour changer au choix la couleur des symboles, des textes ou des numéros.
Ainsi, le code :
Code : PHP | <?php
$geshi->set_comments_style('MULTI', 'background-color:orange; font-variant:small-caps;');
$geshi->set_symbols_style('font-weight:bold; size:24px;');
$geshi->set_strings_style('background:navy; color:white;');
$geshi->set_numbers_style('font-size:16px;');
?>
|
donnera :
Bon : je vous conseille bien sûr de prendre des styles de meilleur goût ; ici, il s'agit juste bien sûr de marquer les différences, mais essayez d'accorder avec le style général de votre site

(en espérant que vous n'utilisez pas ce genre de style...).