Probleme Geshin, code non coloré.

Petit nouveau ! | 4 Messages

16 févr. 2008, 17:33

Salut à tous!
Je vais vous exposer mon problème...
Un membre, ou moi même, peut écrire son code html dans un formulaire, une fois finis, il valide et peut observer le résultat sur une page aperçus. Sur la page principale le code est affiché. Jusque là pas de problème, ça marche impeccable (j'utilisais les balises xmp, qui marchaient d'ailleurs très bien).

J'aimerais maintenant coloré mon code.
J'ai transférer geshi.php, /contrib, /geshi, /docs à la racine de mon site (je fais les tests en local, mais online ça marche pas non plus XD)
Voila le code (avec ce que j'appelle):
<?php
include_once('geshi.php'); // Inclure la librairie GeSHi
 
$source=fopen("apercus.html","r");
while (!feof($source))
{
        $ligne=fgets($source);
        $language = 'html';
        $geshi =& new GeSHi($ligne, $language); // Créer un objet "GeSHi"
         echo $geshi->parse_code();
}
mysql_close();
?>
Le code est bien appelé et on peut le lire. Bon le problème c'est que Geshin saute une ligne à chaque fois, mais le problème principal reste que le code n'est pas coloré...

A mon avis il y a un problème avec le while car si je teste geshin sans rien faire c'est à dire juste grace à ce script:
<?
include_once('geshi.php'); // Inclure la librairie GeSHi
 
// Mettre la source dans la variable $source
 
$source = '$foo = 45;
for ( $i = 1; $i < $foo; $i++ )
{
 echo "$foo<br />\n";
 --$foo;
}';
 
$language = 'php'; // Définir le langage à utiliser
 
$geshi =& new GeSHi($source, $language); // Créer un objet "GeSHi"
echo $geshi->parse_code(); // Afficher le résultat
?>
He bas ça marche impeccable, mais ça n'est pas ce que je veux puisque j'apelle le script...

Quelqu'un a t 'il une idée?

MERCI d'avance!!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 févr. 2008, 18:44

Et si tu faisais comme dans l'exemple que tu nous donnes et qui fonctione : lire tout le code et le stocker dans une variable avant de le passer à ton geshi, au lieu de lui donner ligne par ligne ?

par ailleurs es-tu sur qu'il existe une coloration pour le langage "html" ? un rapide survol de la doc me donne comme exemple de langage "html4strict" et non juste "html" .... peut être une piste à creuser :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

16 févr. 2008, 20:12

Salut! Tout d'abord merci beaucoup pour ton aide.
Oui pour HTML , html4strict, merci pour la précision.

Je vois ce que tu veux dire seulement, je ne vois pas bien comment le faire XD.
Voila ce que j'ai essayé:
<?
include_once('geshi.php'); // Inclure la librairie GeSHi
$fichier=fopen("apercus.html","r"); //Je recupere mon fichier html dans $fichier

while (!feof($fichier))                     //feof, jusqu'a la fin du fichier faire....
{
		$ligne=fgets($fichier);   //Je lis chaque ligne du fichier
}
 
$language = 'html4strict'; // Définir le langage à utiliser
$geshi =& new GeSHi($ligne, $language); // Créer un objet "GeSHi"
echo $geshi->parse_code(); // Afficher le résultat
?>
Cela m'affiche:
parse_code(); // Afficher le résultat ?>
autrement dit, cela ne m'affiche plus de code du tout.

J'ai alors pensé à ce que tu as dis et ne pas lire le fichier ligne par ligne:
<?
include_once('geshi.php'); // Inclure la librairie GeSHi
$fichier=fopen("apercus.html","r"); 

$ligne=fgets($fichier);

$language = 'html4strict'; // Définir le langage à utiliser
$geshi =& new GeSHi($ligne, $language); // Créer un objet "GeSHi"
echo $geshi->parse_code(); // Afficher le résultat
?>
J'ai le même probleme, plus de code afiché... Je sais plus quoi faire -_-

Je bloque, ça m'enerve... :?

Merci à ceux qui m'aide et qui m'aideront.

Petit nouveau ! | 4 Messages

18 févr. 2008, 16:06

lire tout le code et le stocker dans une variable avant de le passer à ton geshi, au lieu de lui donner ligne par ligne ?
Up! Est-ce que quelqu'un a une idée pour faire ça svp?

Merci.

Peperr
Invité n'ayant pas de compte PHPfrance

22 févr. 2008, 20:55

Up!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 févr. 2008, 12:59

Modération :
Peper, les "up" sont interdits sur PHPFrance.

Merci de prendre le temps de lire les règlements.


Quant à ton problème, dans le premier cas tu écrases à chaque fois la variable $ligne avec le fgets() (au lieu de cncatener les valeurs dans ta chaine) du coup tu n'auras que la derniere ligne, et dans le second tu ne boucle pas et n'auras des lors que la première...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...