Menu

Coloration gueshi mais à moitier

- - Dernière réponse :  lionnel - 14 mars 2019 à 09:00
Bonjour,

j'ai installer le code coloration avec une fonction

quand je met dans le textarea.

<code=php>
<?php
 
echo 'gggggg' 
 
 
?>

</code>

et ca m'affiche bien

code : php

<?php

mon echo

?>


et j'ai mis cette fonction

function code($source, $language){
     
    $source = html_entity_decode($source);
    $code = new GeSHi($source, $language); 
    $parse = $code->parse_code();
    $resultat = '<div>Code : '.$language.'<br/>'.$parse.'</div>';
    return ($resultat);
     
}
 
 
function mynl2br($text) {
   return strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />'));
}



je m'apperçoit qui colore bien

echo 'gggggg'

mais il ne colore pas la balise <?php et ?>

a votre avis pour quoi il colore bien mon echo mais pas les balise

ensuite j'ai voulu rajouter à ma fonction afin d'afficher les lignes

$geshi->set_header_type(GESHI_HEADER_DIV);
$geshi->set_header_type(GESHI_HEADER_PRE); 
$geshi->set_header_type(GESHI_HEADER_NONE);


mais ca n'a pas vraiment fonctionner



j'ai tenter de mettre aussi ce code qui permet de colorer une ligne sur 2

$geshi->set_line_style('background: #fcfcfc;', 'background: #f0f0f0;');


si quelqu'un pourrait m'aidé à mettre les numeros de ligne et essayer de voir coment faire pour colorer les balise php et mettre 2 couleur different à chaque ligne

merci de votre aide


si quelqu'un pouvait m'aider
Configuration: Windows / Chrome 72.0.3626.121
Afficher la suite 

Votre réponse

2 réponses

Messages postés
25015
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mars 2019
1904
0
Merci
Bonjour,

concernant la coloration de <?php et ?> ... si on regarde les exemples... ont voit bien que ces instructions restent en noir...
http://qbnz.com/highlighter/examples.php?c=php&e=simple

Ensuite, toujours d'après la documentation
$geshi->set_header_type(GESHI_HEADER_DIV);
$geshi->set_header_type(GESHI_HEADER_PRE); 
$geshi->set_header_type(GESHI_HEADER_NONE);

Il ne faut choisir que l'une des lignes parmis ces 3 ....
Ca permet de définir dans "quoi" tu veux afficher ton code.. soit une DIV soit un PRE... soit...rien...


Et enfin... toujours d'après la documentation... pour mettre les lignes en couleur.. il faut utiliser
$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 8)


Bref... je pense qu'un peu de lecture te serait utile..
http://sdz.tdct.org/sdz/geshi-colorer-son-code.html


oui, mais le souci

si je met

$geshi->set_header_type(GESHI_HEADER_DIV);




il me dit

Notice: Undefined variable: geshi in /var/www/legtux.org/users/site/www/v2/func_code.php on line 20

Fatal error: Uncaught Error: Call to a member function set_header_type() on null in /var/www/legtux.org/users/site/www/v2/func_code.php:20 Stack trace: #0 /var/www/legtux.org/users/site/www/v2/func_code.php(8) : runtime-created function(1): code('\r\n\r\n<?php\r\n/...', 'php') #1 [internal function]: __lambda_func(Array) #2 /var/www/legtux.org/users/site/www/v2/func_code.php(8): preg_replace_callback('#<code=(.+)&...', '\x00lambda_2', '<code=php>...') #3 /var/www/legtux.org/users/site/www/v2/index.php(12): zcode('<code=php>...') #4 {main} thrown in /var/www/legtux.org/users/communautaire/www/v2/func_code.php on line 20



alors si je met le code pour changer couleur c'est la même erreur ;)
Commenter la réponse de jordane45
Messages postés
25015
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mars 2019
1904
0
Merci
Peut-être parce que toi tu as utilisé $code.... Hein...

$code = new GeSHi($source, $language); 


Cordialement, 
Jordane                                                                 
oui , je veux bien

function code($source, $language){
     
    $source = html_entity_decode($source);
    $code = new GeSHi($source, $language); 
    $parse = $code->parse_code();

$code->set_header_type(GESHI_HEADER_DIV);
$code->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 8);
$code->set_line_style('background: #fcfcfc;', 'background: #f0f0f0;'); 
    $resultat = '<div class="prev-php"><h3 class="titre-php">'.$language.'</h3>'.$parse.'</div>';
    return ($resultat);
     
}
 
 
function mynl2br($text) {
   return strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />'));
} 



mais si je mets

$code->set_header_type(GESHI_HEADER_DIV);
$code->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 8);
$code->set_line_style('background: #fcfcfc;', 'background: #f0f0f0;'); 



il n'affiche pas les lignes et il ne veut pas se colorer les ligne

ensuite j'ai voulu mettre un cadre <div class="prev-php"><h3 class="titre-php">

je voulais savoir coment changer .$language.' par le bon langage

afin de mettre u n cadre php un cadre html

<div class="prev-php"><h3 class="titre-php">php</h3>code php</code>
<div class="prev-html"><h3 class="titre-html">html</h3>code html</code>
etc..


si vous pouvez m'aidé à faire ces petits 3 chjose ca sera sympas

après surement il faut modifier la fonction là pour le mettre dans le bbcode.js


dans la bcode j'ai mis ca

	  // début des mots en programmation
      field = field.replace(/<code-php>([\s\S]*?)<\/code-php>/g, '<div class="prev-php"><h3 class="titre-php">php</h3>$1</div>');
      field = field.replace(/<code-html>([\s\S]*?)<\/code-html>/g, '<div class="prev-html"><h3 class="titre-html">html</h3>$1</div>');
      field = field.replace(/<code-css>([\s\S]*?)<\/code-css>/g, '<div class="prev-css"><h3 class="titre-css">css</h3>$1</div>');
      field = field.replace(/<code-js>([\s\S]*?)<\/code-js>/g, '<div class="prev-js"><h3 class="titre-js">javasscript</h3>$1</div>');
      field = field.replace(/<code-jquery>([\s\S]*?)<\/code-jquery>/g, '<div class="prev-jquery"><h3 class="titre-html">jquery</h3>$1</div>');
      field = field.replace(/<code-bdd>([\s\S]*?)<\/code-bdd>/g, '<div class="prev-bdd"><h3 class="titre-bdd">bdd</h3>$1</div>');
	  // fin des mots en programmation



merci de ton aide ;)
c'est bon j'ai mal mis le code en bon endroit mais là c'est bon il m'affiche bien la ligne et les couleurs ;)

maintenant il faut que je voit pour langage afin de mettre les bonne class dans chaque langage ;)

t après ca sera bbcode.js
bonjour, excusez-moi de revenir sur mon problème.

je remarque que le code html, js et bdd

il ne veut pas se coloré

ensuite j'ai remarquer dans la source

il met à chaque fois cette class


<div class="php">


hors moi,j voudrais quand je selectionne html

je verrais cette class

prev-html, .prev-css, .prev-js, .prev-jquery, .prev-php, .prev-bdd

et je mettrais un fond différent à chaque class

si on sélectionne html je verrais par exemple un fond bleu

php un fond rouge etc....


$resultat = '<div class="php"><h3 class="titre-php">'.$language.'</h3>'.$parse.'</div>';


comment faire pour afficher les class selon le code html php et js etc..

et aussi pour quoi le code html js et bdd ne veut pas se coloré


merci de votre aide
Commenter la réponse de jordane45