Bonsoir,

J'aimerai savoir comment afficher du code HTML lors de la publication d'un post.

<p>J'aimerai faire cela</p>

6 réponses


Maenhyr
Réponse acceptée

Il y a l'air d'avoir des erreurs suivant les scripts : http://blog.blakesimpson.co.uk/read/5-installing-syntaxhighlighter-error-xregexp-not-defined.

Personnellement je préfère la libraire Google Code Prettify à SyntaxHighlighter.

Il faut utiliser la balise <pre> et ne pas oublier d'échapper ton code.si tu ne le fais pas, ta page web va exécuter le code dans ta balise au lieu de l'afficher.

< devient <

devient >>

<pre><p> je veux faire cela </p>

Etc.

PS : comme tu peux potentiellement exécuter du code malicieux, il est nécessaire de nettoyer le code avant l'affichage.

tu peux utiliser la fonction php: htmlentities();

palmer08
Auteur

Merci pour vos réponses mais en fait, je cherchai le nom du plugin qui affiche le code. En regardant le code source, j'ai trouvé son nom SyntaxHighlighter. Je l'ai donc téléchargé, j'ai essaié de le faire fonctionner mais il ne fonctionne pas. J'ai ajouté ces deux lignes dans mon fichier.

<?php echo $this->Html->script(array('syntaxhighlighter/shCore', 'syntaxhighlighter/shBrushPhp'), array('inline' => false)); ?>
<?php echo $this->Html->css(array('syntaxhighlighter/shCore', 'syntaxhighlighter/shThemeDefault.css'), null, array('inline' => false)); ?>

Et quand je vais voir dans la console, il y a ça d'écrit:

Uncaught ReferenceError: XRegExp is not defined shCore.js:109
Uncaught TypeError: Cannot read property 'Highlighter' of null shBrushPhp.js:65

Enfin pour afficher le code dans ma page, j'ai écrit cela.

<pre class="brush: php"><p>J'aimerai faire cela</p></pre>

C'est tout simplement parce que le plugin cherche le fichier XRegExp et qu'il ne le trouve pas dans ton système. L'as tu bien téléchargé aussi ?

palmer08
Auteur

Oui il est bien téléchargé et dans le même dossier que shCore.js et shBrushPhp.js.