Page 1 sur 1

Probleme Geshin, code non coloré.

Posté : 16 févr. 2008, 17:33
par Peper
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!!!

Posté : 16 févr. 2008, 18:44
par Ryle
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 :)

Posté : 16 févr. 2008, 20:12
par Peper
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.

Posté : 18 févr. 2008, 16:06
par Peper
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.

Posté : 22 févr. 2008, 20:55
par Peperr
Up!

Posté : 23 févr. 2008, 12:59
par Ryle
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...