Coloration syntaxique sur du PHP interactif

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous,

Je comprends bien que la balise de code PHP n'a pas forcément été prévue à cet effet, mais je n'ai pas la moindre couleur lorsque je mets du PHP entré en mode interactif dans une de ces balises :

1
2
3
4
5
6
```php
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !
`` ` (J'ai ajouté l'espace moi-même pour "imbriquer" les balises)

donne l'affichage suivant :

1
2
3
4
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !

Je m'attendais au moins à voir les noms de fonctions, de variables ou le commentaire se colorer ! :'(

Cette réponse a aidé l'auteur du sujet

Malheureusement, il ne semble pas y avoir de lexer pour PHP en mode console chez pygments. Il faut sans doutes voir avec eux pourquoi cet exemple ne fonctionne pas, mais en survolant la doc il semblerai qu'il manque les balises <?php

EDIT: c'est bien ça:

1
2
3
4
5
6
7
```php
<?php
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !
`` `
1
2
3
4
5
<?php
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !

Du coup c'est peut-être configurable en mettant startinline = True quelque part.

Édité par Luthaf

Mon Github — Tuto Homebrew — Article Julia

+1 -0

Pour rebondir là dessus, c'est pas un peu chiant de devoir placer un <? ou un <?php en tête de chaque code pour qu'il soit coloré ? Y'a pas moyen de le faire par défaut, à partir du moment où l'auteur a clairement précisé via ```php qu'il s'agit de code PHP ?

Améliorons la validation ! - ZdS, faut bien secouer, sinon la pulpe, elle reste en bas !

+2 -0
Staff

@Coyote : le problème c'est que le PHP peut se mélanger au HTML, donc un bout de code peut ne pas commencer par du PHP.

Exemple :

1
2
3
4
<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $toto: ?></title>

[EDIT] Bon, c'est vrai que la coloration du HTML saute (d'ailleurs c'est pas très normal), mais ça reste du code valide et courant…

Édité par viki53

Du coup, ça vous paraît pertinent de colorer automatiquement si l'auteur précise ```php, ou pas ?… :euh:

Coyote

C'est le but de l'option startinline=True qu'il faut passer au lexer, sans doutes depuis ZMarkdown.

Il faudrait peut-être aussi rajouter le lien vers les lexers pygments dans la doc Markdoqn de ZdS.

Édité par Luthaf

Mon Github — Tuto Homebrew — Article Julia

+0 -0
Staff

Si on écris ```php il paraît logique de ne pas avoir besoin de devoir repréciser <?php derrière.

La source

Oui et non.

Quand tu as un fichier PHP dans un éditeur de texte ou un IDE et que tu n'as pas utilisé <?php ton code n'est pas coloré car pas considéré comme du PHP (le marqueur permettant l'interprétation).

Staff

Justement. Si avec un fichier entier on doit mettre le marqueur pour avoir la coloration, ça me paraît logique qu'il faille le mettre pour une portion de fichier.

Après comme un a un marqueur html+php, on peut se passer de ce marqueur obligatoire, mais ça va à l'encontre du fonctionnement habituel des colorateurs syntaxiques. À voir s'il vaut mieux garder un comportement certes contraignant mais connu ou risquer de perturber les habitués.

Oui, je parlait bien de rajouter un paramètre.

Après je pense que la non coloration du code console PHP est plus a voir directement du coté de Pygments qui ne le propose pas (contrairement à la console Python). Cependant le problème se pose aussi, comme dis précédemment, si on à une portion de notre code qu'on veut poster sans forcément rajouter le <?php. Hors Pygments propose un paramètre réglable pour faire ça.

Édité par Bibi

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte