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

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

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.