8768 sujets

Développement web côté serveur, CMS

Ca m'affiche plus rien (comme si le $geshi->set_source() marchais pas)
J'ai corriger le code que j'ai posté le $select_language étais à l'intérieur de la boucle et est déjà une fonction qui récup le language de la ligne


<?php
$CODE = "";
$language = explode(',','html4strict,php,css,javascript');

$geshi = new GeSHi($code[0], $language[0]);

for ($i=0;$i<count($code);$i++) { // $code est un array de mon code séparer par ligne
    $select_language = x; // de 0 à 3 selon le language de la ligne
    
    $geshi->set_source($code[$i]);
    $geshi->set_language(language[$select_language]);
    $geshi->enable_classes(false);
    $code_color = $geshi->parse_code();

    $CODE .= $code_couleur.'<br>';
}
echo $CODE;
?>

Modifié par Exter (02 Nov 2020 - 13:17)
Modérateur
Bonjour,

Il vaut sans doute mieux faire le new GeSHi à l'extérieur de la boucle (avec par exemple comme source la première ligne de code et son langage.

On va supposer qu'on dispose d'une fonction qui détermine le langage d'une ligne et qui s'appelle par exemple getLineLanguage().

Et après, à l'intérieur de la boucle :
$geshi = new GeSHi($code[0], getLineLanguage($code[0]));
for ($i=0;$i<count($code);$i++) { // $code est un array de mon code séparer par ligne
    $ligne = $code[$i];
    $lineLanguage = getLineLanguage($code[$i]); // cet appel manque dans la boucle que tu nous as montrée
    $geshi->set_source($code[$i]);
    $geshi->set_language($lineLanguage);
    $geshi->enable_classes(false); // je ne sais pas si c'est utile, j'ai juste vu ça dans la documentation GeSHi
    $code_couleur = $geshi->parse_code();
    $CODE .= $code_couleur.'<br>';
}

Amicalement,
Modifié par parsimonhi (02 Nov 2020 - 13:35)
Mince j'ai éditer le message de base au lieu de répondre Smiley sweatdrop

Bon le code est corrigé dans le post initial mais ca résous pas mon probleme d'avoir défini le $geshi en dehors de la boucle c'est même l'inverse ca affiche plus rien alors qu'avant y'avait que le language qu'étais mal géré

je capte pas ca me semble pourtant logique
Modifié par Exter (02 Nov 2020 - 13:18)
Modérateur
Bonjour,

Dans ce cas, reviens à ton premier code, mais fais un echo $select_language pour voir si effectivement, le langage est le bon.

Amicalement,
Oh merci bien vu c'étais un soucis avec le chois de language... chuis à la masse, comme quoi un oeil neuf et reposé ça aide Smiley cligne

mille merci Smiley biggrin
Modérateur
Bonjour,

Je viens de voir que dans la solution que j'avais proposée, j'avais fait une erreur dans le nom de la variable $code_couleur. C'était sans doute ça qui empêchait de voir un résultat. J'ai corrigé mon post.

Amicalement,
Modifié par parsimonhi (02 Nov 2020 - 13:36)