Coloration gueshi mais à moitier

lionnel -  
 lionnel -
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

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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

    0
    1. lionnel
       
      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 ;)
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Peut-être parce que toi tu as utilisé $code.... Hein...

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


    0
    1. lionnel
       
      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 ;)
      0
    2. lionnel
       
      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
      0
    3. lionnel
       
      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
      0