[poo] highlight_file sur des fichiers en c/c++

Soyez le premier à donner votre avis sur cette source.

Vue 4 454 fois - Téléchargée 170 fois

Description

Affichage d'un code C/C++ comme Visual Studio

Il ya 3 tableaux a mettre en parametre:
$words - les mots à surligner
$preproc - les instructions du préprocesseur à surligner
$denied - les fonctions/types/instructions à interdire

Il y a aussi une vérification de la norme(optionnel) pour obliger à mettre des espaces entre les types et le caractere * au moment de la définition des pointeurs.

Source / Exemple :


<?php

if(phpversion() < 5)
{
	include('parse_code.php4.php');
}
else
{
	include('parse_code.php5.php');
}

/*

    • On créé une fonction qui utlisera la classe en mode automatique
  • /
function highlight_c_file($filename, $denied = array()) { $preproc = array( 'include', 'if', 'ifdef', 'ifndef', 'pragma', 'include', 'define', 'endif', 'else', 'undef' ); $words = array( '__cdecl', '__int8', '__int16', '__int32', '__int64', '__stdcall', 'asm', 'auto', 'break', 'case', 'catch', 'char', 'class', 'comment', 'const', 'continue', 'default', 'delete', 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'friend', 'goto', 'if', 'inline', 'int', 'lib', 'long', 'new', 'null', 'operator', 'overload', 'private', 'protected', 'public', 'register', 'return', 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', 'template', 'this', 'throw', 'typedef', 'typename', 'union', 'unsigned', 'virtual', 'void', 'volatile', 'while' ); $parse = new parse_code($filename); $parse->set_strict(true); $parse->set_words($words, $preproc, $denied); $parse->go(); } ?> <html> <head> <title>Affichage du Code Source</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="imagetoolbar" content="no"> <style type="text/css"> <!-- body { margin : 0px 0px 0px 0px; background-color: #9cacbe; font-size: 9px; font-family: "Verdana", Arial; } #block { width: 80ex; font-size: 12px; background-color: #FFF; float: left; height: auto; border: 1px solid #000000; margin: 2ex; left: 5px; top: 5px; right: 5px; bottom: 5px; white-space: pre; padding: 10px; color: #333; text-decoration: none; } --> </style> </head> <body> <pre id="block"> <?php $filename = $_GET['file']; highlight_c_file($filename); ?> </pre> </body> </html>

Conclusion :


il y a 2 versions de la classe: une pour PHP4 et l'autre pour PHP5
j'ai testé seulement sous PHP5, en principe les modifications que j'ai faites pour la version PHP4 devraient tout remettre en ordre pour cette version.

si vous ne savez pas quelle version de PHP vous avez ou que vous passez souvent de la version 4 à la version 5, regardez les premieres lignes de l'exemple, c'est une petite astuce pour ne pas avoir a remodifier les fichiers.

vous pouvez aussi rajouter vos propres mots clés(ou ceux que j'ai pu oublier), en rajoutant des éléments au tableau $words dans l'exemple

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

Un peu plus de 2 ans après, d'autres choses sont apparues, je ne maintiens pas ma source, mais je vous propose de suivre le lien ci-dessous, il s'agit d'une classe du projet PEAR, elle permet de colorer beaucoup d'autres langages, et certainement plus rapidement

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.