begin process at 2012 02 15 20:13:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > PEINTURE SUR SOURCES (UN TRUC QUI FAIT DE LA COLORATION SYNTAXIQUE)

PEINTURE SUR SOURCES (UN TRUC QUI FAIT DE LA COLORATION SYNTAXIQUE)


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :coloration, syntaxique, colorer, sources, parsing Niveau :Initié Date de création :25/05/2007 Vu / téléchargé :4 434 / 110

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note


 Description

Salut
J'ai fait une source qui colore une autre source... c'etait pour mon gestionaire de blog, mais que dire... il est vieux, rouille, mal concu, (peu modifiable), et probablement inutile a quelques fonctions pres, je mets donc a disposition de chacun quelques unes de ces fonctions

Ce fichier permet de colorer des codes sources ou des fichiers possedant un formatage particulier :

Cette coloration synthaxique gere les fichiers :
-C
-C++
-PHP
-SQL
-XUL (un xml pour mozilla)
-CSS
-HTML
-XML
-BAS (Qbasic pour etre precis)
-les fichiers de conf (ini)
-javascript
-povray (un langage de 3d)
-python (pas parfaitement complet)
-java

Faite dans le but de simplifier la lecture des sources sur mon blog,
retilise ensuite pour le gestionnaire de paste.

envoyez color('source', 'mime'); et vous aurez votre code tout en couleur...
exemples ici :
http://82.127.116.43:82/paste

Source

  • <?php
  • /*
  • Ce fichier permet de colorer des codes sources ou des fichiers poss&#65533;ant un formatage particulier :
  • Cette coloration synthaxique g&#65533;e les fichiers :
  • -C
  • -C++
  • -PHP
  • -SQL
  • -XUL
  • -CSS
  • -HTML
  • -XML
  • -BAS
  • -les fichiers de conf (ini)
  • -javascript
  • -povray
  • -python
  • -java
  • Faite dans le but de simplifier la lecture des sources sur mon blog,
  • r&#65533;tilis&#65533; ensuite pour le gestionnaire de past.
  • */
  • //toutes les colorations possibles
  • $colorations=array(
  • 'pas de coloration'=>'txt',
  • 'perl'=>'application/x-perl',
  • 'php'=>'application/x-httpd-php',
  • 'C'=>'text/x-csrc',
  • 'C++'=>'text/x-c++src',
  • 'XUL'=>'application/vnd.mozilla.xul+xml',
  • 'html'=>'text/html',
  • 'XML'=>'text/xml',
  • 'CSS'=>'text/css',
  • 'SQL'=>'text/x-sql',
  • 'javascript'=>'application/x-javascript',
  • 'bas'=>'bas',
  • 'INI'=>'ini',
  • 'povray'=>'pov',
  • 'tcl'=>'text/x-tcl',
  • 'bash'=>'application/x-shellscript',
  • 'python'=>'text/x-python',
  • 'java'=>'text/x-java'
  • );
  • $options_colorations='';
  • $li_colorations='';
  • foreach ($colorations as $a=>$b){
  • $options_colorations.='<option value="'.$a.'">'.$a.'</option>';
  • $li_colorations.='<li>'.$a.'</li>';
  • }
  • function coloreCallback($match){
  • global $colorations;
  • if (isset($colorations[$match[1]])){
  • return '<fieldset>
  • <legend>Code source : '.$match[1].'</legend>
  • '.colore(html_entity_decode(str_replace('<br />','
  • ',$match[2])), $colorations[$match[1]]).'
  • </fieldset>';
  • }else{
  • return '<fieldset>
  • <legend>Code source : '.$match[1].'</legend>
  • '.colore(html_entity_decode(str_replace('<br />','
  • ',$match[2])), 'txt').'
  • </fieldset>';
  • }
  • }
  • function colore($texte, $type){
  • if ($type=='txt') return nl2br(htmlentities(stripslashes($texte)));
  • //On d&#65533;lare les param&#65533;res par d&#65533;aut de la coloration.
  • $coloration=array();
  • //si les instructions pr&#65533;rocesseurs commencent par #
  • $coloration['#=preproc']=false;
  • //si les commentaires commencent par #
  • $coloration['#=comment']=false;
  • //si on a le ph&#65533;om&#65533;e des magik quotes (perl et php)
  • $coloration['magic quotes']=false;
  • //si les variables commencent par $
  • $coloration['dolar var']=false;
  • //les mots clefs
  • $coloration['key words']=false;
  • //les fonctions / instructions...
  • $coloration['function words']=false;
  • //les quotes sont support&#65533;s
  • $coloration['quotes']=false;
  • //les slashs servent pour faire des commentaires
  • $coloration['comment slash']=false;
  • //langage de balises
  • $coloration['balises']=false;
  • //pour le CSS : les accolages en bold
  • $coloration['accolades']=false;
  • //pour le CSS, les attributs se trouvent entre les caract&#65533;es : et ;
  • $coloration[': to ;']=false;
  • //si on peut mettre des \n dans des doubles guillemets
  • $coloration['quotes_double_slash']=false;
  • //si on peut mettre des \n dans des simples guillemets
  • $coloration['quotes_simple_slash']=false;
  • //si on peut mettre des \n sans guillemets (tcl ou bash)
  • $coloration['no_quotes_slash']=false;
  • //les constantes comme NULL, true ou false
  • $coloration['const']=false;
  • //le fait qu'on prenne en compte les doubles quotes
  • $coloration['doublequotes']=false;
  • //let motc clefs par d&#65533;aut
  • $key_words=array(
  • 'if', 'break', 'else', 'die', 'default', 'case',
  • 'switch', 'or', 'xor', 'and', 'not', 'exit', 'while', 'return',
  • 'int', 'bool', 'for', 'class', 'new', 'do');
  • $function_words=array();
  • $const_words=array('NULL', 'true','false', 'FALSE', 'TRUE', '__LINE__', '__FILE__');
  • //les caract&#65533;es qui d&#65533;imitent les mots clefs : la fin et le d&#65533;ut
  • $begin_key_words=$end_key_words=array(
  • '(', ')', '[', ']', '{', '}',
  • "\n", "\t", "\r",
  • ' ', '','=',
  • '+','-','*','/',
  • '!',';', '.',',',
  • '<','>');
  • //les carat&#65533;es color&#65533; apr&#65533; les \
  • $quote_slash=array('n', 'r', 't', '0', '\'', '"');
  • switch ($type){
  • case 'text/x-java':
  • $coloration['quotes_double_slash']=true;
  • $coloration['quotes_simple_slash']=true;
  • $coloration['#=preproc']=true;
  • $coloration['key words']=true;
  • $coloration['function words']=true;
  • $coloration['quotes']=true;
  • $coloration['doublequotes']=true;
  • $coloration['comment slash']=true;
  • $coloration['const']=true;
  • //mots cleds
  • $key_words[]='unsigned';
  • $key_words[]='signed';
  • $key_words[]='char';
  • $key_words[]='struct';
  • $key_words[]='void';
  • $key_words[]='class';
  • $key_words[]='String';
  • $key_words[]='Graphics';
  • $key_words[]='Color';
  • $key_words[]='buttun';
  • $key_words[]='import';
  • $key_words[]='implements';
  • $key_words[]='extends';
  • $key_words[]='static';
  • $key_words[]='try';
  • $key_words[]='catch';
  • $key_words[]='throw';
  • $key_words[]='public';
  • $key_words[]='private';
  • //fonctions
  • $function_words[]='drawLine';
  • $function_words[]='fillRect';
  • $function_words[]='drawRect';
  • $function_words[]='drawOval';
  • $function_words[]='fillOval';
  • break;
  • case 'text/x-python':
  • $coloration['#=comment']=true;
  • $key_words[]='def';
  • $key_words[]='global';
  • $key_words[]='not';
  • $key_words[]='found';
  • $key_words[]='in';
  • $key_words[]='elif';
  • $key_words[]='import';
  • $key_words[]='try';
  • $key_words[]='catch';
  • $key_words[]='throw';
  • $function_words[]='print';
  • $function_words[]='gtk';
  • $const_words[]='None';
  • $coloration['key words']=true;
  • $coloration['function words']=true;
  • $coloration['quotes_double_slash']=true;
  • $coloration['quotes_simple_slash']=true;
  • $coloration['const']=true;
  • $coloration['doublequotes']=true;
  • break;
  • case 'application/x-shellscript':
  • $coloration['#=comment']=true;
  • $coloration['magic quotes']=true;
  • $coloration['dolar var']=true;
  • $coloration['key words']=true;
  • $coloration['function words']=true;
  • $coloration['quotes']=true;
  • $coloration['quotes_double_slash']=true;
  • $coloration['quotes_simple_slash']=true;
  • $coloration['no_quotes_slash']=true;
  • $coloration['const']=true;
  • $coloration['doublequotes']=true;
  • //mots clefs
  • $key_words[]='fi';
  • $key_words[]='then';
  • $key_words[]='echo';
  • $key_words[]='eval';
  • $key_words[]='not';
  • $key_words[]='esac';
  • $key_words[]='export';
  • $key_words[]='source';
  • $key_words[]='local';
  • $key_words[]='xargs';
  • $key_words[]='in';
  • $key_words[]='continue';
  • $key_words[]='done';
  • $key_words[]='default';
  • $key_words[]='elif';
  • $key_words[]='eq';
  • $key_words[]='end';
  • $key_words[]='sub';
  • //fonctions
  • $function_words[]='date';
  • $function_words[]='cd';
  • $function_words[]='grep';
  • $function_words[]='cat';
  • $function_words[]='ls';
  • $function_words[]='chmod';
  • $function_words[]='chown';
  • $function_words[]='chgrp';
  • $function_words[]='alias';
  • $function_words[]='su';
  • $function_words[]='mv';
  • $function_words[]='cp';
  • $function_words[]='sed';
  • $function_words[]='mkdir';
  • $function_words[]='rename';
  • $function_words[]='copy';
  • $function_words[]='move';
  • $function_words[]='sudo';
  • $function_words[]='complete';
  • $function_words[]='printf';
  • $function_words[]='egrep';
  • $function_words[]='sort';
  • $function_words[]='awk';
  • $function_words[]='print';
  • $function_words[]='ruby';
  • $function_words[]='type';
  • break;
  • case 'text/x-tcl':
  • //du tcl (tcl.tk, ou des plugins... test&#65533;uniquement sur des plugins pour X-Chat)
  • //exemple : amsn est fait en tcl
  • //les m&#65533;hodes de coloration
  • $coloration['#=comment']=true;
  • $coloration['dolar var']=true;
  • $coloration['key words']=true;
  • $coloration['doublequotes']=true;
  • $coloration['magic quotes']=true;
  • $coloration['quotes_double_slash']=true;
  • $coloration['no_quotes_slash']=true;
  • $coloration['const']=true;
  • $coloration['function words']=true;
  • $coloration['const']=true;
  • //les mots clefs ajout&#65533;
  • $key_words[]='on';
  • $key_words[]='set';
  • $key_words[]='alias';
  • $key_words[]='proc';
  • $key_words[]='try';
  • $key_words[]='catch';
  • $key_words[]='throw';
  • //les constantes
  • $const_words[]='PRIVMSG';
  • $const_words[]='XC_CHANVOICE';
  • $const_words[]='XC_CHANOP';
  • $const_words[]='XC_CHANHOP';
  • $const_words[]='XC_CHANDEVOICE';
  • $const_words[]='XC_CHANDEOP';
  • $const_words[]='XC_CHANDEHOP';
  • //les fonctions
  • $function_words[]='lindex';
  • $function_words[]='regexp';
  • $function_words[]='print';
  • $function_words[]='raw';
  • $function_words[]='complete';
  • $function_words[]='string';
  • $function_words[]='length';
  • $function_words[]='join';
  • $function_words[]='list';
  • $function_words[]='range';
  • $function_words[]='command';
  • $function_words[]='match';
  • $function_words[]='expr';
  • $function_words[]='file';
  • $function_words[]='size';
  • $function_words[]='open';
  • $function_words[]='read';
  • $function_words[]='close';
  • $function_words[]='split';
  • $function_words[]='llength';
  • $function_words[]='end';
  • $function_words[]='JOIN';
  • $function_words[]='ID';
  • $function_words[]='GHOST';
  • $function_words[]='PART';
  • $function_words[]='NICK';
  • break;
  • case 'application/x-perl':
  • //du perl (cgi ou perl classique)
  • //param&#65533;res
  • $coloration['quotes_double_slash']=true;
  • $coloration['#=comment']=true;
  • $coloration['magic quotes']=true;
  • $coloration['dolar var']=true;
  • $coloration['key words']=true;
  • $coloration['quotes']=true;
  • $coloration['doublequotes']=true;
  • $coloration['const']=true;
  • $coloration['function words']=true;
  • //mots clefs
  • $key_words[]='each';
  • $key_words[]='use';
  • $key_words[]='my';
  • $key_words[]='eq';
  • $key_words[]='qw';
  • //fonctions
  • $function_words[]='sqrt';
  • $function_words[]='printf';
  • break;
  • case 'application/x-httpd-php':
  • case 'application/x-php':
  • //du php (console, gtk ou serveur web)
  • //param&#65533;res
  • $coloration['quotes_double_slash']=true;
  • $coloration['#=comment']=true;
  • $coloration['magic quotes']=true;
  • $coloration['dolar var']=true;
  • $coloration['key words']=true;
  • $coloration['function words']=true;
  • $coloration['quotes']=true;
  • $coloration['doublequotes']=true;
  • $coloration['comment slash']=true;
  • $coloration['const']=true;
  • //mots clefs
  • $key_words[]='function';
  • $key_words[]='foreach';
  • $key_words[]='echo';
  • $key_words[]='as';
  • //fonctions
  • $function_words[]='each';
  • $function_words[]='list';
  • $function_words[]='isset';
  • $function_words[]='array';
  • $function_words[]='preg_replace';
  • $function_words[]='array_filter';
  • $function_words[]='print_r';
  • $function_words[]='count';
  • $function_words[]='array_merge';
  • $function_words[]='in_array';
  • $function_words[]='session_start';
  • $function_words[]='mysql_select_db';
  • $function_words[]='mysql_connect';
  • $function_words[]='mysql_error';
  • $function_words[]='mysql_query';
  • $function_words[]='mysql_fetch_array';
  • $function_words[]='strval';
  • $function_words[]='intval';
  • $function_words[]='floatval';
  • $function_words[]='to_double';
  • $function_words[]='fopen';
  • $function_words[]='fclose';
  • $function_words[]='file_exists';
  • $function_words[]='is_dir';
  • $function_words[]='is_file';
  • $function_words[]='fgets';
  • $function_words[]='fputs';
  • $function_words[]='write';
  • $function_words[]='feof';
  • $function_words[]='mkdir';
  • $function_words[]='array_rand';
  • $function_words[]='sort';
  • $function_words[]='mysql_num_rows';
  • $function_words[]='mysql_fetch_assoc';
  • $function_words[]='addslashes';
  • $function_words[]='bin2hex';
  • $function_words[]='chop';
  • $function_words[]='chr';
  • $function_words[]='ord';
  • $function_words[]='explode';
  • $function_words[]='implode';
  • $function_words[]='file';
  • $function_words[]='array_merge';
  • $function_words[]='sleep';
  • $function_words[]='print_r';
  • $function_words[]='md5';
  • $function_words[]='print';
  • $function_words[]='printf';
  • $function_words[]='striptags';
  • $function_words[]='str_replace';
  • $function_words[]='strtoupper';
  • $function_words[]='strtolower';
  • $function_words[]='substr';
  • $function_words[]='preg';
  • $function_words[]='ereg';
  • $function_words[]='preg_split';
  • $function_words[]='preg_match_all';
  • $function_words[]='preg_match';
  • $function_words[]='mail';
  • $function_words[]='touch';
  • $function_words[]='readdir';
  • $function_words[]='opendir';
  • $function_words[]='imageCreateFromJpeg';
  • $function_words[]='imageCreateFromBmp';
  • $function_words[]='imageCreateFromPng';
  • $function_words[]='imageCreateFromGif';
  • $function_words[]='imageString';
  • $function_words[]='imageline';
  • $function_words[]='imageJpeg';
  • $function_words[]='imageBmp';
  • $function_words[]='imageGif';
  • $function_words[]='imagePng';
  • break;
  • case 'text/x-csrc':
  • case 'text/x-chdr':
  • case 'text/x-c++hdr':
  • case 'text/x-c++src':
  • //du C
  • //param&#65533;res
  • $coloration['quotes_double_slash']=true;
  • $coloration['quotes_simple_slash']=true;
  • $coloration['#=preproc']=true;
  • $coloration['key words']=true;
  • $coloration['function words']=true;
  • $coloration['quotes']=true;
  • $coloration['doublequotes']=true;
  • $coloration['comment slash']=true;
  • $coloration['const']=true;
  • //mots cleds
  • $key_words[]='unsigned';
  • $key_words[]='signed';
  • $key_words[]='char';
  • $key_words[]='struct';
  • $key_words[]='void';
  • $key_words[]='std::';
  • $key_words[]='static';
  • $key_words[]='try';
  • $key_words[]='public';
  • $key_words[]='private';
  • //fonctions
  • $function_words[]='malloc';
  • $function_words[]='realloc';
  • $function_words[]='sizeof';
  • $function_words[]='printf';
  • $function_words[]='sprintf';
  • $function_words[]='free';
  • $function_words[]='new';
  • $function_words[]='exit';
  • $function_words[]='fopen';
  • $function_words[]='feof';
  • $function_words[]='fread';
  • $function_words[]='fputs';
  • $function_words[]='fgets';
  • break;
  • case 'application/vnd.mozilla.xul+xml':
  • case 'text/html':
  • case 'application/xml':
  • case 'text/xml':
  • //du html, xml ou xul, (rss, svg, rdf...)
  • $coloration['balises']=true;
  • $coloration['doublequotes']=true;
  • break;
  • case 'text/css':
  • //un fichier CSS
  • $coloration['accolades']=true;
  • $coloration[': to ;']=true;
  • $coloration['comment slash']=true;
  • break;
  • case 'bas':
  • //un fichier basic (Qbasic uniquement...)
  • //param&#65533;res
  • $coloration['doublequotes']=true;
  • $coloration['quotes_double_slash']=true;
  • $coloration['key words']=true;
  • //mots clefs
  • $key_words[]='IF';
  • $key_words[]='THEN';
  • $key_words[]='ELSE';
  • $key_words[]='FOR';
  • $key_words[]='TO';
  • $key_words[]='NEXT';
  • $key_words[]='ELSE';
  • $key_words[]='SCREEN';
  • $key_words[]='LINE';
  • $key_words[]='CIRCLE';
  • $key_words[]='PRINT';
  • $key_words[]='TIMER';
  • $key_words[]='RANDOMIZE';
  • $key_words[]='CLS';
  • $key_words[]='SLEEP';
  • $key_words[]='CLEAR';
  • $key_words[]='INT';
  • $key_words[]='RND';
  • $key_words[]='INKEY$';
  • $key_words[]='CASE';
  • $key_words[]='CHR$';
  • $key_words[]='GOTO';
  • $key_words[]='END';
  • $key_words[]='SELECT';
  • $key_words[]='DO';
  • $key_words[]='LOOP';
  • $key_words[]='LEN';
  • $key_words[]='MID$';
  • $key_words[]='LOCATE';
  • break;
  • case 'pov':
  • //un fichier povray
  • //param&#65533;res
  • $coloration['comment slash']=true;
  • $coloration['#=preproc']=true;
  • $coloration['doublequotes']=true;
  • $coloration['quotes_double_slash']=true;
  • $coloration['key words']=true;
  • //mots clefs totalement redeffinis
  • $key_words=array(
  • 'global_settings',
  • 'difference',
  • 'texture',
  • 'plane',
  • 'assumed_gamma',
  • 'photons',
  • 'pigment',
  • 'color',
  • 'rgb',
  • 'rgbft',
  • 'scale',
  • 'light_source',
  • 'camera',
  • 'location',
  • 'perspective',
  • 'look_at',
  • 'rotate',
  • 'translate',
  • 'sphere',
  • 'checker',
  • 'finish',
  • 'ambient',
  • 'diffuse',
  • 'specular',
  • 'roughness',
  • 'phong',
  • 'interior',
  • 'ior',
  • 'dispersion'
  • );
  • break;
  • case 'ini':
  • //un fichier ini (test&#65533;avec php.ini)
  • //param&#65533;res
  • $coloration['comment slash']=true;
  • $coloration['#=comment']=true;
  • $coloration['doublequotes']=true;
  • $coloration['quotes_double_slash']=true;
  • $coloration['key words']=true;
  • //mots clefs totalement redefinis
  • $key_words=array('true','false');
  • break;
  • case 'text/x-sql':
  • //un fichier sql
  • $coloration['quotes_double_slash']=true;
  • $coloration['quotes_simple_slash']=true;
  • $coloration['comment slash']=true;
  • $coloration['doublequotes']=true;
  • $coloration['key words']=true;
  • $coloration['function words']=true;
  • //mots clefs totalement redeffinis.
  • $key_words=array(
  • 'INSERT',
  • 'INTO',
  • 'VALUES',
  • 'CREATE',
  • 'TABLE',
  • 'SHOW',
  • 'CREATE',
  • 'COUNT',
  • 'GROUP',
  • 'SELECT',
  • 'FROM',
  • 'LEFT',
  • 'INNER',
  • 'JOIN',
  • 'RIGHT',
  • 'OUTER',
  • 'RETURN',
  • 'SHOW',
  • 'FUNCTION',
  • 'DETERMINISTIC',
  • 'REAL',
  • 'TEXT',
  • 'INT',
  • 'VARCHAR',
  • 'CHAR',
  • 'DELETE',
  • 'WHERE',
  • 'AND',
  • 'OR',
  • 'ON',
  • 'ORDER',
  • 'BY',
  • 'MAX',
  • 'MIN',
  • 'SUM',
  • 'SET'
  • );
  • //Les fonctions
  • $function_words=array(
  • 'REPLACE',
  • 'DATE_FORMAT',
  • 'LENGTH');
  • break;
  • case 'application/x-javascript':
  • //un fichier javascript
  • $coloration['quotes']=true;
  • $coloration['doublequotes']=true;
  • $coloration['quotes_double_slash']=true;
  • $coloration['quotes_simple_slash']=true;
  • $coloration['key words']=true;
  • $coloration['const']=true;
  • $coloration['function words']=true;
  • //les fonctions
  • $function_words[]='function';
  • $function_words[]='var';
  • $function_words[]='window';
  • $function_words[]='document';
  • $function_words[]='location';
  • $function_words[]='href';
  • $function_words[]='getElementById';
  • $function_words[]='value';
  • $function_words[]='prompt';
  • $function_words[]='eval';
  • $function_words[]='alert';
  • $function_words[]='continue';
  • $function_words[]='sumbmit';
  • $function_words[]='regexp';
  • $function_words[]='Math';
  • $function_words[]='Array';
  • $function_words[]='navigator';
  • $function_words[]='history';
  • $function_words[]='open';
  • break;
  • default:
  • return 'Pas de coloration corespondante';
  • break;
  • }
  • $var='';
  • $texte=explode('
  • ', $texte);
  • $guillemets=0;
  • $comment=false;
  • $balise_open=false;
  • $accolades_open=false;
  • while (list ($a, $b)=each($texte)){
  • $lignetraite=0;
  • $b_old=$b;
  • $length=strlen($b)+1;
  • for ($i=0;$i<$length;$i++){
  • if (isset($b{$i}))
  • switch($b{$i}){
  • case ':':
  • if (false===$comment && $coloration[': to ;']){
  • $pos=strpos(substr($b, $i), ';');
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="background-color:#07F;color:#FFF;">'.htmlentities(
  • substr($b,$i,$pos)).'</span>';
  • $i=$i+$pos;
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • break;
  • case '{':
  • if (false===$comment && $coloration['accolades'] && !$accolades_open){
  • $accolades_open=true;
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#0077FF;">';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • break;
  • case '}':
  • if (false===$comment && $coloration['accolades'] && $accolades_open===true){
  • $i++;
  • $accolades_open=false;
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '</span>';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • break;
  • case '<':
  • if (false===$comment && $coloration['balises'] && $balise_open===false){
  • $balise_open=true;
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#07A;">';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • break;
  • case '>':
  • if (false===$comment && $coloration['balises'] && $balise_open==true){
  • $balise_open=false;
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite+1)).
  • '</span>';
  • $b=$b1.substr($b,$i+1);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • break;
  • case '#';
  • if (false===$comment && $coloration['#=comment']){
  • if ($guillemets===0){
  • $b=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#888">'.
  • htmlentities(substr($b,$i)). '</span>';
  • $i=strlen($b);
  • $lignetraite=$i;
  • }
  • }else if ($coloration['#=preproc']){
  • if ($guillemets===0){
  • $b=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#080">'.
  • htmlentities(substr($b,$i)). '</span>';
  • $i=strlen($b);
  • $lignetraite=$i;
  • }
  • }
  • break;
  • case '/';
  • if ($guillemets===0 && $coloration['comment slash'] && $comment===false){
  • if ($b{$i+1}==='/'){
  • $b=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#888">'.htmlentities(
  • substr($b,$i)). '</span>';
  • $i=strlen($b);
  • $lignetraite=$i;
  • }else if ($b{$i+1}==='*'){
  • $comment=true;
  • $b1=substr($b,0,$lignetraite).htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#888;">';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • }
  • break;
  • case '*':
  • if ($coloration['comment slash']===true &&
  • $b{$i+1}==='/' &&
  • $comment
  • ){
  • $i+=2;
  • $comment=false;
  • $b1=substr($b,0,$lignetraite).htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '</span>';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • break;
  • case '$':
  • if (
  • $coloration['dolar var']===true && $comment===false && (
  • ($guillemets!==1 && $coloration['magic quotes']===true) ||
  • ($coloration['magic quotes']===false && $guillemets===0)
  • )
  • ){
  • $j=0;
  • while(
  • preg_replace('/^[a-z0-9_]+$/i',
  • '',
  • substr($b,$i+1,$j))==''
  • && $j<$length
  • )
  • $j++;
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#007">'.htmlentities(
  • substr($b,$i,$j)).'</span>';
  • $b=$b1.substr($b,$i+$j);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • $i--;
  • }
  • break;
  • case "\t":
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite+1)).
  • '&#160;&#160;&#160;&#160;&#160;';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • break;
  • case ' ':
  • if ($b{$i-1}===' '){
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite+1)).'&#160;';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • break;
  • case '"':
  • /*
  • Si on a une ligne :
  • " salut \"
  • alors la chaine n'est pas termin&#65533;, alors que :
  • "salut \\""
  • alors la chaine est termin&#65533; !
  • Donc, la v&#65533;ification du $b{$i-1}
  • doit &#65533;re accompagn&#65533; de celle du $b{$i-2}
  • */
  • if ($coloration['doublequotes']===true && false===$comment){
  • if (
  • $guillemets===2 && (
  • $b{$i-1}!=='\\' ||
  • $b{$i-2}==='\\'
  • )
  • ){
  • $guillemets=0;
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite+1)).
  • '</span> ';
  • $b=$b1.substr($b,$i+1);
  • $i=strlen($b1)-1;
  • $lignetraite=$i;
  • }else if ($guillemets===0){
  • $guillemets=2;
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#7F0;">';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • }
  • break;
  • case '\'':
  • if (false===$comment && $coloration['quotes']===true){
  • if ($guillemets==1 && $b{$i-1}!=='\\'){
  • $guillemets=0;
  • $b1=substr($b,0,$lignetraite).htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite+1)).'</span>';
  • $b=$b1.substr($b,$i+1);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }else if ($guillemets==0){
  • $guillemets=1;
  • $b1=substr($b,0,$lignetraite).htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#F00;">';
  • $b=$b1.substr($b,$i);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • }
  • break;
  • case '\\':
  • if (
  • !$comment
  • && in_array($b{$i+1}, $quote_slash)
  • && (
  • ($guillemets===1 && $coloration['quotes_simple_slash']===true) ||
  • ($guillemets===2 && $coloration['quotes_double_slash']===true) ||
  • ($guillemets===0 && $coloration['no_quotes_slash']===true)
  • )
  • ){
  • $i++;
  • $lignetraite++;
  • $b1=substr($b,0,$lignetraite).'<span style="color:F07;">'.htmlentities(
  • '\\'.$b{$i}).'</span>';
  • $b=$b1.substr($b,$i+1);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • $i--;
  • }
  • break;
  • default:
  • if (
  • (
  • $coloration['key words']===true ||
  • $coloration['function words']===true
  • ) &&
  • $guillemets===0 &&
  • $comment===false &&
  • $guillemets===0)
  • {
  • $j=false;
  • if ($coloration['key words']===true){
  • reset($key_words);
  • while (list($m, $k)=each($key_words)){
  • //foreach ($key_words as $k){
  • $len=strlen($k);
  • if (isset($b{$i-1})){
  • if (
  • strtolower(substr($b,$i,$len))==strtolower($k)
  • && in_array($b{$i+$len}, $end_key_words)
  • && in_array($b{$i-1}, $begin_key_words)
  • ){
  • $j=$len;
  • $color='AA0';
  • break;
  • }
  • }else{
  • if (
  • strtolower(substr($b,$i,$len))==strtolower($k)
  • && in_array($b{$i+$len}, $end_key_words)
  • ){
  • $j=$len;
  • $color='AA0';
  • break;
  • }
  • }
  • }
  • }
  • if ($coloration['const']===true && $j===false){
  • reset($const_words);
  • while (list($m, $k)=each($const_words)){
  • //foreach ($key_words as $k){
  • $len=strlen($k);
  • if (
  • strtolower(substr($b,$i,$len))==strtolower($k)
  • && in_array($b{$i+$len}, $end_key_words)
  • && in_array($b{$i-1}, $begin_key_words)
  • ){
  • $j=$len;
  • $color='0A0';
  • break;
  • }
  • }
  • }
  • if ($coloration['function words']===true && $j===false){
  • reset($function_words);
  • while (list($m, $k)=each($function_words)){
  • //foreach ($key_words as $k){
  • $len=strlen($k);
  • if (
  • strtolower(substr($b,$i,$len))==strtolower($k)
  • && in_array($b{$i+$len}, $end_key_words)
  • && (( $i-1>0 &&
  • in_array($b{$i-1}, $begin_key_words))
  • || $i-1<0)
  • ){
  • $j=$len;
  • $color='0AD';
  • break;
  • }
  • }
  • }
  • if ($j!==false){
  • $b1=substr($b,0,$lignetraite).
  • htmlentities(
  • substr($b,$lignetraite,$i-$lignetraite)).
  • '<span style="color:#'.$color.';">'.htmlentities(
  • substr($b,$i,$j)).'</span>';
  • $b=$b1.substr($b,$i+$j);
  • $i=strlen($b1);
  • $lignetraite=$i;
  • }
  • }
  • break;
  • }
  • if ($b!==$b_old){
  • $b_old=$b;
  • $length=strlen($b)+1;
  • }
  • }
  • $b=substr($b,0,$lignetraite).htmlentities(substr($b,$lignetraite));
  • $n=($a%2==0)?1:2;
  • $var.='<span class="ligne'.$n.'">'.($a+1).'</span> '.$b.'<br />
  • ';
  • }
  • return $var;
  • }
  • ?>
<?php
/*
Ce fichier permet de colorer des codes sources ou des fichiers poss&#65533;ant un formatage particulier :

Cette coloration synthaxique g&#65533;e les fichiers :
	-C
	-C++
	-PHP
	-SQL
	-XUL
	-CSS
	-HTML
	-XML
	-BAS
	-les fichiers de conf (ini)
	-javascript
	-povray
	-python
	-java

Faite dans le but de simplifier la lecture des sources sur mon blog,
r&#65533;tilis&#65533; ensuite pour le gestionnaire de past.
*/



//toutes les colorations possibles
$colorations=array(
	'pas de coloration'=>'txt',
	'perl'=>'application/x-perl',
	'php'=>'application/x-httpd-php',
	'C'=>'text/x-csrc',
	'C++'=>'text/x-c++src',
	'XUL'=>'application/vnd.mozilla.xul+xml',
	'html'=>'text/html',
	'XML'=>'text/xml',
	'CSS'=>'text/css',
	'SQL'=>'text/x-sql',
	'javascript'=>'application/x-javascript',
	'bas'=>'bas',
	'INI'=>'ini',
	'povray'=>'pov',
	'tcl'=>'text/x-tcl',
	'bash'=>'application/x-shellscript',
	'python'=>'text/x-python',
	'java'=>'text/x-java'
);
$options_colorations='';
$li_colorations='';
foreach ($colorations as $a=>$b){
	$options_colorations.='<option value="'.$a.'">'.$a.'</option>';
	$li_colorations.='<li>'.$a.'</li>';
}
function coloreCallback($match){
	global $colorations;
	if (isset($colorations[$match[1]])){
	return '<fieldset>
		<legend>Code source : '.$match[1].'</legend>
		'.colore(html_entity_decode(str_replace('<br />','
',$match[2])), $colorations[$match[1]]).'
		</fieldset>';
	}else{
		return '<fieldset>
		<legend>Code source : '.$match[1].'</legend>
		'.colore(html_entity_decode(str_replace('<br />','
',$match[2])), 'txt').'
		</fieldset>';
	}
}
function colore($texte, $type){
	if ($type=='txt') return nl2br(htmlentities(stripslashes($texte)));
	//On d&#65533;lare les param&#65533;res par d&#65533;aut de la coloration.
	$coloration=array();
	//si les instructions pr&#65533;rocesseurs commencent par #
	$coloration['#=preproc']=false;
	//si les commentaires commencent par #
	$coloration['#=comment']=false;
	//si on a le ph&#65533;om&#65533;e des magik quotes (perl et php)
	$coloration['magic quotes']=false;
	//si les variables commencent par $
	$coloration['dolar var']=false;
	//les mots clefs
	$coloration['key words']=false;
	//les fonctions / instructions...
	$coloration['function words']=false;
	//les quotes sont support&#65533;s
	$coloration['quotes']=false;
	//les slashs servent pour faire des commentaires
	$coloration['comment slash']=false;
	//langage de balises
	$coloration['balises']=false;
	//pour le CSS : les accolages en bold
	$coloration['accolades']=false;
	//pour le CSS, les attributs se trouvent entre les caract&#65533;es : et ;
	$coloration[': to ;']=false;
	//si on peut mettre des \n dans des doubles guillemets
	$coloration['quotes_double_slash']=false;
	//si on peut mettre des \n dans des simples guillemets
	$coloration['quotes_simple_slash']=false;
	//si on peut mettre des \n sans guillemets (tcl ou bash)
	$coloration['no_quotes_slash']=false;
	//les constantes comme NULL, true ou false
	$coloration['const']=false;
	//le fait qu'on prenne en compte les doubles quotes
	$coloration['doublequotes']=false;
	//let motc clefs par d&#65533;aut
	$key_words=array(
		'if', 'break', 'else', 'die', 'default', 'case',
		'switch', 'or', 'xor', 'and', 'not', 'exit', 'while', 'return',
		'int', 'bool', 'for', 'class', 'new', 'do');
	$function_words=array();
	$const_words=array('NULL', 'true','false', 'FALSE', 'TRUE', '__LINE__', '__FILE__');
	//les caract&#65533;es qui d&#65533;imitent les mots clefs : la fin et le d&#65533;ut
	$begin_key_words=$end_key_words=array(
	'(', ')', '[', ']', '{', '}',
	"\n", "\t", "\r",
	' ', '','=',
	'+','-','*','/',
	'!',';', '.',',',
	'<','>');
	//les carat&#65533;es color&#65533; apr&#65533; les \
	$quote_slash=array('n', 'r', 't', '0', '\'', '"');
	switch ($type){
		case 'text/x-java':
			$coloration['quotes_double_slash']=true;
			$coloration['quotes_simple_slash']=true;
			$coloration['#=preproc']=true;
			$coloration['key words']=true;
			$coloration['function words']=true;
			$coloration['quotes']=true;
			$coloration['doublequotes']=true;
			$coloration['comment slash']=true;
			$coloration['const']=true;
			//mots cleds
			$key_words[]='unsigned';
			$key_words[]='signed';
			$key_words[]='char';
			$key_words[]='struct';
			$key_words[]='void';
			$key_words[]='class';
			$key_words[]='String';
			$key_words[]='Graphics';
			$key_words[]='Color';
			$key_words[]='buttun';
			$key_words[]='import';
			$key_words[]='implements';
			$key_words[]='extends';
			$key_words[]='static';
			$key_words[]='try';
			$key_words[]='catch';
			$key_words[]='throw';
			$key_words[]='public';
			$key_words[]='private';
			//fonctions
			$function_words[]='drawLine';
			$function_words[]='fillRect';
			$function_words[]='drawRect';
			$function_words[]='drawOval';
			$function_words[]='fillOval';
			break;
		case 'text/x-python':
			$coloration['#=comment']=true;
			$key_words[]='def';
			$key_words[]='global';
			$key_words[]='not';
			$key_words[]='found';
			$key_words[]='in';
			$key_words[]='elif';
			$key_words[]='import';
			$key_words[]='try';
			$key_words[]='catch';
			$key_words[]='throw';
			$function_words[]='print';
			$function_words[]='gtk';
			$const_words[]='None';
			$coloration['key words']=true;
			$coloration['function words']=true;
			$coloration['quotes_double_slash']=true;
			$coloration['quotes_simple_slash']=true;
			$coloration['const']=true;
			$coloration['doublequotes']=true;
			break;
		case 'application/x-shellscript':
			$coloration['#=comment']=true;
			$coloration['magic quotes']=true;
			$coloration['dolar var']=true;
			$coloration['key words']=true;
			$coloration['function words']=true;
			$coloration['quotes']=true;
			$coloration['quotes_double_slash']=true;
			$coloration['quotes_simple_slash']=true;
			$coloration['no_quotes_slash']=true;
			$coloration['const']=true;
			$coloration['doublequotes']=true;
			//mots clefs
			$key_words[]='fi';
			$key_words[]='then';
			$key_words[]='echo';
			$key_words[]='eval';
			$key_words[]='not';
			$key_words[]='esac';
			$key_words[]='export';
			$key_words[]='source';
			$key_words[]='local';
			$key_words[]='xargs';
			$key_words[]='in';
			$key_words[]='continue';
			$key_words[]='done';
			$key_words[]='default';
			$key_words[]='elif';
			$key_words[]='eq';
			$key_words[]='end';
			$key_words[]='sub';
			//fonctions
			$function_words[]='date';
			$function_words[]='cd';
			$function_words[]='grep';
			$function_words[]='cat';
			$function_words[]='ls';
			$function_words[]='chmod';
			$function_words[]='chown';
			$function_words[]='chgrp';
			$function_words[]='alias';
			$function_words[]='su';
			$function_words[]='mv';
			$function_words[]='cp';
			$function_words[]='sed';
			$function_words[]='mkdir';
			$function_words[]='rename';
			$function_words[]='copy';
			$function_words[]='move';
			$function_words[]='sudo';
			$function_words[]='complete';
			$function_words[]='printf';
			$function_words[]='egrep';
			$function_words[]='sort';
			$function_words[]='awk';
			$function_words[]='print';
			$function_words[]='ruby';
			$function_words[]='type';
		break;
		case 'text/x-tcl':
		//du tcl (tcl.tk, ou des plugins... test&#65533;uniquement sur des plugins pour X-Chat)
		//exemple : amsn est fait en tcl
			//les m&#65533;hodes de coloration
			$coloration['#=comment']=true;
			$coloration['dolar var']=true;
			$coloration['key words']=true;
			$coloration['doublequotes']=true;
			$coloration['magic quotes']=true;
			$coloration['quotes_double_slash']=true;
			$coloration['no_quotes_slash']=true;
			$coloration['const']=true;
			$coloration['function words']=true;
			$coloration['const']=true;
			//les mots clefs ajout&#65533;
			$key_words[]='on';
			$key_words[]='set';
			$key_words[]='alias';
			$key_words[]='proc';
			$key_words[]='try';
			$key_words[]='catch';
			$key_words[]='throw';
			//les constantes
			$const_words[]='PRIVMSG';
			$const_words[]='XC_CHANVOICE';
			$const_words[]='XC_CHANOP';
			$const_words[]='XC_CHANHOP';
			$const_words[]='XC_CHANDEVOICE';
			$const_words[]='XC_CHANDEOP';
			$const_words[]='XC_CHANDEHOP';
			//les fonctions
			$function_words[]='lindex';
			$function_words[]='regexp';
			$function_words[]='print';
			$function_words[]='raw';
			$function_words[]='complete';
			$function_words[]='string';
			$function_words[]='length';
			$function_words[]='join';
			$function_words[]='list';
			$function_words[]='range';
			$function_words[]='command';
			$function_words[]='match';
			$function_words[]='expr';
			$function_words[]='file';
			$function_words[]='size';
			$function_words[]='open';
			$function_words[]='read';
			$function_words[]='close';
			$function_words[]='split';
			$function_words[]='llength';
			$function_words[]='end';
			$function_words[]='JOIN';
			$function_words[]='ID';
			$function_words[]='GHOST';
			$function_words[]='PART';
			$function_words[]='NICK';
		break;
		case 'application/x-perl':
			//du perl (cgi ou perl classique)
			//param&#65533;res
			$coloration['quotes_double_slash']=true;
			$coloration['#=comment']=true;
			$coloration['magic quotes']=true;
			$coloration['dolar var']=true;
			$coloration['key words']=true;
			$coloration['quotes']=true;
			$coloration['doublequotes']=true;
			$coloration['const']=true;
			$coloration['function words']=true;
			//mots clefs
			$key_words[]='each';
			$key_words[]='use';
			$key_words[]='my';
			$key_words[]='eq';
			$key_words[]='qw';
			//fonctions
			$function_words[]='sqrt';
			$function_words[]='printf';
			break;
		case 'application/x-httpd-php':
		case 'application/x-php':
			//du php (console, gtk ou serveur web)
			//param&#65533;res
			$coloration['quotes_double_slash']=true;
			$coloration['#=comment']=true;
			$coloration['magic quotes']=true;
			$coloration['dolar var']=true;
			$coloration['key words']=true;
			$coloration['function words']=true;
			$coloration['quotes']=true;
			$coloration['doublequotes']=true;
			$coloration['comment slash']=true;
			$coloration['const']=true;
			//mots clefs
			$key_words[]='function';
			$key_words[]='foreach';
			$key_words[]='echo';
			$key_words[]='as';
			//fonctions
			$function_words[]='each';
			$function_words[]='list';
			$function_words[]='isset';
			$function_words[]='array';
			$function_words[]='preg_replace';
			$function_words[]='array_filter';
			$function_words[]='print_r';
			$function_words[]='count';
			$function_words[]='array_merge';
			$function_words[]='in_array';
			$function_words[]='session_start';
			$function_words[]='mysql_select_db';
			$function_words[]='mysql_connect';
			$function_words[]='mysql_error';
			$function_words[]='mysql_query';
			$function_words[]='mysql_fetch_array';
			$function_words[]='strval';
			$function_words[]='intval';
			$function_words[]='floatval';
			$function_words[]='to_double';
			$function_words[]='fopen';
			$function_words[]='fclose';
			$function_words[]='file_exists';
			$function_words[]='is_dir';
			$function_words[]='is_file';
			$function_words[]='fgets';
			$function_words[]='fputs';
			$function_words[]='write';
			$function_words[]='feof';
			$function_words[]='mkdir';
			$function_words[]='array_rand';
			$function_words[]='sort';
			$function_words[]='mysql_num_rows';
			$function_words[]='mysql_fetch_assoc';
			$function_words[]='addslashes';
			$function_words[]='bin2hex';
			$function_words[]='chop';
			$function_words[]='chr';
			$function_words[]='ord';
			$function_words[]='explode';
			$function_words[]='implode';
			$function_words[]='file';
			$function_words[]='array_merge';
			$function_words[]='sleep';
			$function_words[]='print_r';
			$function_words[]='md5';
			$function_words[]='print';
			$function_words[]='printf';
			$function_words[]='striptags';
			$function_words[]='str_replace';
			$function_words[]='strtoupper';
			$function_words[]='strtolower';
			$function_words[]='substr';
			$function_words[]='preg';
			$function_words[]='ereg';
			$function_words[]='preg_split';
			$function_words[]='preg_match_all';
			$function_words[]='preg_match';
			$function_words[]='mail';
			$function_words[]='touch';
			$function_words[]='readdir';
			$function_words[]='opendir';
			$function_words[]='imageCreateFromJpeg';
			$function_words[]='imageCreateFromBmp';
			$function_words[]='imageCreateFromPng';
			$function_words[]='imageCreateFromGif';
			$function_words[]='imageString';
			$function_words[]='imageline';
			$function_words[]='imageJpeg';
			$function_words[]='imageBmp';
			$function_words[]='imageGif';
			$function_words[]='imagePng';
			break;
		case 'text/x-csrc':
		case 'text/x-chdr':
		case 'text/x-c++hdr':
		case 'text/x-c++src':
			//du C
			//param&#65533;res
			$coloration['quotes_double_slash']=true;
			$coloration['quotes_simple_slash']=true;
			$coloration['#=preproc']=true;
			$coloration['key words']=true;
			$coloration['function words']=true;
			$coloration['quotes']=true;
			$coloration['doublequotes']=true;
			$coloration['comment slash']=true;
			$coloration['const']=true;
			//mots cleds
			$key_words[]='unsigned';
			$key_words[]='signed';
			$key_words[]='char';
			$key_words[]='struct';
			$key_words[]='void';
			$key_words[]='std::';
			$key_words[]='static';
			$key_words[]='try';
			$key_words[]='public';
			$key_words[]='private';
			
			//fonctions
			$function_words[]='malloc';
			$function_words[]='realloc';
			$function_words[]='sizeof';
			$function_words[]='printf';
			$function_words[]='sprintf';
			$function_words[]='free';
			$function_words[]='new';
			$function_words[]='exit';
			$function_words[]='fopen';
			$function_words[]='feof';
			$function_words[]='fread';
			$function_words[]='fputs';
			$function_words[]='fgets';
		break;
		case 'application/vnd.mozilla.xul+xml':
		case 'text/html':
		case 'application/xml':
		case 'text/xml':
			//du html, xml ou xul, (rss, svg, rdf...)
			$coloration['balises']=true;
			$coloration['doublequotes']=true;
		break;
		case 'text/css':
			//un fichier CSS
			$coloration['accolades']=true;
			$coloration[': to ;']=true;
			$coloration['comment slash']=true;
		break;
		case 'bas':
			//un fichier basic (Qbasic uniquement...)
			//param&#65533;res
			$coloration['doublequotes']=true;
			$coloration['quotes_double_slash']=true;
			$coloration['key words']=true;
			//mots clefs
			$key_words[]='IF';
			$key_words[]='THEN';
			$key_words[]='ELSE';
			$key_words[]='FOR';
			$key_words[]='TO';
			$key_words[]='NEXT';
			$key_words[]='ELSE';
			$key_words[]='SCREEN';
			$key_words[]='LINE';
			$key_words[]='CIRCLE';
			$key_words[]='PRINT';
			$key_words[]='TIMER';
			$key_words[]='RANDOMIZE';
			$key_words[]='CLS';
			$key_words[]='SLEEP';
			$key_words[]='CLEAR';
			$key_words[]='INT';
			$key_words[]='RND';
			$key_words[]='INKEY$';
			$key_words[]='CASE';
			$key_words[]='CHR$';
			$key_words[]='GOTO';
			$key_words[]='END';
			$key_words[]='SELECT';
			$key_words[]='DO';
			$key_words[]='LOOP';
			$key_words[]='LEN';
			$key_words[]='MID$';
			$key_words[]='LOCATE';
		break;
		case 'pov':
			//un fichier povray
			//param&#65533;res
			$coloration['comment slash']=true;
			$coloration['#=preproc']=true;
			$coloration['doublequotes']=true;
			$coloration['quotes_double_slash']=true;
			$coloration['key words']=true;
			//mots clefs totalement redeffinis
			$key_words=array(
				'global_settings',
				'difference',
				'texture',
				'plane',
				'assumed_gamma',
				'photons',
				'pigment',
				'color',
				'rgb',
				'rgbft',
				'scale',
				'light_source',
				'camera',
				'location',
				'perspective',
				'look_at',
				'rotate',
				'translate',
				'sphere',
				'checker',
				'finish',
				'ambient',
				'diffuse',
				'specular',
				'roughness',
				'phong',
				'interior',
				'ior',
				'dispersion'
				);
		break;
		case 'ini':
			//un fichier ini (test&#65533;avec php.ini)
			//param&#65533;res
			$coloration['comment slash']=true;
			$coloration['#=comment']=true;
			$coloration['doublequotes']=true;
			$coloration['quotes_double_slash']=true;
			$coloration['key words']=true;
			//mots clefs totalement redefinis
			$key_words=array('true','false');
		break;
		case 'text/x-sql':
			//un fichier sql
			$coloration['quotes_double_slash']=true;
			$coloration['quotes_simple_slash']=true;
			$coloration['comment slash']=true;
			$coloration['doublequotes']=true;
			$coloration['key words']=true;
			$coloration['function words']=true;
			//mots clefs totalement redeffinis.
			$key_words=array(
				'INSERT',
				'INTO',
				'VALUES',
				'CREATE',
				'TABLE',
				'SHOW',
				'CREATE',
				'COUNT',
				'GROUP',
				'SELECT',
				'FROM',
				'LEFT',
				'INNER',
				'JOIN',
				'RIGHT',
				'OUTER',
				'RETURN',
				'SHOW',
				'FUNCTION',
				'DETERMINISTIC',
				'REAL',
				'TEXT',
				'INT',
				'VARCHAR',
				'CHAR',
				'DELETE',
				'WHERE',
				'AND',
				'OR',
				'ON',
				'ORDER',
				'BY',
				'MAX',
				'MIN',
				'SUM',
				'SET'
			);
			//Les fonctions
			$function_words=array(
				'REPLACE',
				'DATE_FORMAT',
				'LENGTH');
		break;
		case 'application/x-javascript':
			//un fichier javascript
			$coloration['quotes']=true;
			$coloration['doublequotes']=true;
			$coloration['quotes_double_slash']=true;
			$coloration['quotes_simple_slash']=true;
			$coloration['key words']=true;
			$coloration['const']=true;
			$coloration['function words']=true;
			//les fonctions
			$function_words[]='function';
			$function_words[]='var';
			$function_words[]='window';
			$function_words[]='document';
			$function_words[]='location';
			$function_words[]='href';
			$function_words[]='getElementById';
			$function_words[]='value';
			$function_words[]='prompt';
			$function_words[]='eval';
			$function_words[]='alert';
			$function_words[]='continue';
			$function_words[]='sumbmit';
			$function_words[]='regexp';
			$function_words[]='Math';
			$function_words[]='Array';
			$function_words[]='navigator';
			$function_words[]='history';
			$function_words[]='open';
		break;
		default:
			return 'Pas de coloration corespondante';
		break;
	}
	$var='';
	$texte=explode('
', $texte);
	$guillemets=0;
	$comment=false;
	$balise_open=false;
	$accolades_open=false;
	while (list ($a, $b)=each($texte)){
		$lignetraite=0;
		$b_old=$b;
		$length=strlen($b)+1;
		for ($i=0;$i<$length;$i++){
			if (isset($b{$i}))
			switch($b{$i}){
				case ':':
					if (false===$comment && $coloration[': to ;']){
						$pos=strpos(substr($b, $i), ';');
						$b1=substr($b,0,$lignetraite).
						htmlentities(
						substr($b,$lignetraite,$i-$lignetraite)).
						'<span style="background-color:#07F;color:#FFF;">'.htmlentities(
						substr($b,$i,$pos)).'</span>';
						$i=$i+$pos;
						$b=$b1.substr($b,$i);
						$i=strlen($b1);
						$lignetraite=$i;
					}
				break;
				case '{':
					if (false===$comment && $coloration['accolades'] && !$accolades_open){
						$accolades_open=true;
						$b1=substr($b,0,$lignetraite).
						htmlentities(
						substr($b,$lignetraite,$i-$lignetraite)).
						'<span style="color:#0077FF;">';
						$b=$b1.substr($b,$i);
						$i=strlen($b1);
						$lignetraite=$i;
					}
				break;
				case '}':
					if (false===$comment && $coloration['accolades'] && $accolades_open===true){
						$i++;
						$accolades_open=false;
						$b1=substr($b,0,$lignetraite).
						htmlentities(
						substr($b,$lignetraite,$i-$lignetraite)).
						'</span>';
						$b=$b1.substr($b,$i);
						$i=strlen($b1);
						$lignetraite=$i;
					}
				break;
				case '<':
					if (false===$comment && $coloration['balises'] && $balise_open===false){
						$balise_open=true;
						$b1=substr($b,0,$lignetraite).
						htmlentities(
						substr($b,$lignetraite,$i-$lignetraite)).
						'<span style="color:#07A;">';
						$b=$b1.substr($b,$i);
						$i=strlen($b1);
						$lignetraite=$i;
					}
				break;
				case '>':
					if (false===$comment && $coloration['balises'] && $balise_open==true){
						$balise_open=false;
						$b1=substr($b,0,$lignetraite).
						htmlentities(
						substr($b,$lignetraite,$i-$lignetraite+1)).
						'</span>';
						$b=$b1.substr($b,$i+1);
						$i=strlen($b1);
						$lignetraite=$i;
					}
				break;
				case '#';
					if (false===$comment && $coloration['#=comment']){
						if ($guillemets===0){
							$b=substr($b,0,$lignetraite).
							htmlentities(
							substr($b,$lignetraite,$i-$lignetraite)).
							'<span style="color:#888">'.
							htmlentities(substr($b,$i)).	'</span>';
							$i=strlen($b);
							$lignetraite=$i;
						}
					}else if ($coloration['#=preproc']){
						if ($guillemets===0){
							$b=substr($b,0,$lignetraite).
							htmlentities(
							substr($b,$lignetraite,$i-$lignetraite)).
							'<span style="color:#080">'.
							htmlentities(substr($b,$i)).	'</span>';
							$i=strlen($b);
							$lignetraite=$i;
						}
					}
				break;
				case '/';
					if ($guillemets===0 && $coloration['comment slash'] && $comment===false){
						if ($b{$i+1}==='/'){
							$b=substr($b,0,$lignetraite).
							htmlentities(
							substr($b,$lignetraite,$i-$lignetraite)).
							'<span style="color:#888">'.htmlentities(
								substr($b,$i)).	'</span>';
							$i=strlen($b);
							$lignetraite=$i;
						}else if ($b{$i+1}==='*'){
							$comment=true;
							$b1=substr($b,0,$lignetraite).htmlentities(
								substr($b,$lignetraite,$i-$lignetraite)).
								'<span style="color:#888;">';
							$b=$b1.substr($b,$i);
							$i=strlen($b1);
							$lignetraite=$i;
						}
					}
				break;
				case '*':
					if ($coloration['comment slash']===true &&
						$b{$i+1}==='/' &&
						$comment
					){
						$i+=2;
						$comment=false;
						$b1=substr($b,0,$lignetraite).htmlentities(
						substr($b,$lignetraite,$i-$lignetraite)).
							'</span>';
						$b=$b1.substr($b,$i);
						$i=strlen($b1);
						$lignetraite=$i;
					}
				break;
				case '$':
					if (
						$coloration['dolar var']===true && $comment===false && (
							($guillemets!==1 && $coloration['magic quotes']===true) ||
							($coloration['magic quotes']===false && $guillemets===0)
						)
					){
						$j=0;
						while(
							preg_replace('/^[a-z0-9_]+$/i',
							'',
							substr($b,$i+1,$j))==''
							&& $j<$length
						)
							$j++;
						$b1=substr($b,0,$lignetraite).
						htmlentities(
						substr($b,$lignetraite,$i-$lignetraite)).
						'<span style="color:#007">'.htmlentities(
							substr($b,$i,$j)).'</span>';
						$b=$b1.substr($b,$i+$j);
						$i=strlen($b1);
						$lignetraite=$i;
						$i--;
					}
				break;
				case "\t":
					$b1=substr($b,0,$lignetraite).
					htmlentities(
					substr($b,$lignetraite,$i-$lignetraite+1)).
					'&#160;&#160;&#160;&#160;&#160;';
					$b=$b1.substr($b,$i);
					$i=strlen($b1);
					$lignetraite=$i;
				break;
				case ' ':
					if ($b{$i-1}===' '){
						$b1=substr($b,0,$lignetraite).
						htmlentities(
						substr($b,$lignetraite,$i-$lignetraite+1)).'&#160;';
						$b=$b1.substr($b,$i);
						$i=strlen($b1);
						$lignetraite=$i;
					}
				break;
				case '"':
					/*
						Si on a une ligne :
						" salut \"
						alors la chaine n'est pas termin&#65533;, alors que :
						"salut \\""
						alors la chaine est termin&#65533; !
						Donc, la v&#65533;ification du $b{$i-1}
						doit &#65533;re accompagn&#65533; de celle du $b{$i-2}
					*/
					if ($coloration['doublequotes']===true && false===$comment){
						if (
							$guillemets===2 && (
								$b{$i-1}!=='\\' ||
								$b{$i-2}==='\\'
							)
						){
							$guillemets=0;
							$b1=substr($b,0,$lignetraite).
							htmlentities(
							substr($b,$lignetraite,$i-$lignetraite+1)).
							'</span> ';
							$b=$b1.substr($b,$i+1);
							$i=strlen($b1)-1;
							$lignetraite=$i;
						}else if ($guillemets===0){
							$guillemets=2;
							$b1=substr($b,0,$lignetraite).
							htmlentities(
							substr($b,$lignetraite,$i-$lignetraite)).
							'<span style="color:#7F0;">';
							$b=$b1.substr($b,$i);
							$i=strlen($b1);
							$lignetraite=$i;
						}
					}
				break;
				case '\'':
					if (false===$comment && $coloration['quotes']===true){
						if ($guillemets==1 && $b{$i-1}!=='\\'){
							$guillemets=0;
							$b1=substr($b,0,$lignetraite).htmlentities(
								substr($b,$lignetraite,$i-$lignetraite+1)).'</span>';
							$b=$b1.substr($b,$i+1);
							$i=strlen($b1);
							$lignetraite=$i;
						}else if ($guillemets==0){
							$guillemets=1;
							$b1=substr($b,0,$lignetraite).htmlentities(
								substr($b,$lignetraite,$i-$lignetraite)).
								'<span style="color:#F00;">';
							$b=$b1.substr($b,$i);
							$i=strlen($b1);
							$lignetraite=$i;
						}
					}
				break;
				case '\\':
					if (
						!$comment
						&& in_array($b{$i+1}, $quote_slash)
						&& (
							($guillemets===1 && $coloration['quotes_simple_slash']===true) ||
							($guillemets===2 && $coloration['quotes_double_slash']===true) ||
							($guillemets===0 && $coloration['no_quotes_slash']===true)
						)
					){
						$i++;
						$lignetraite++;
						$b1=substr($b,0,$lignetraite).'<span style="color:F07;">'.htmlentities(
							'\\'.$b{$i}).'</span>';
						$b=$b1.substr($b,$i+1);
						$i=strlen($b1);
						$lignetraite=$i;
						$i--;
					}
				break;
				default:
					if (
						(
							$coloration['key words']===true ||
							$coloration['function words']===true
						) &&
						$guillemets===0 &&
						$comment===false &&
						$guillemets===0)
					{
						$j=false;
						if ($coloration['key words']===true){
							reset($key_words);
							while (list($m, $k)=each($key_words)){
							//foreach ($key_words as $k){
								$len=strlen($k);
								if (isset($b{$i-1})){
									if (
										strtolower(substr($b,$i,$len))==strtolower($k)
										&& in_array($b{$i+$len}, $end_key_words)
										&& in_array($b{$i-1}, $begin_key_words)
										){
											$j=$len;
											$color='AA0';
											break;
										}
								}else{
									if (
										strtolower(substr($b,$i,$len))==strtolower($k)
										&& in_array($b{$i+$len}, $end_key_words)
										){
											$j=$len;
											$color='AA0';
											break;
										}
								}
							}
						}
						if ($coloration['const']===true && $j===false){
							reset($const_words);
							while (list($m, $k)=each($const_words)){
							//foreach ($key_words as $k){
								$len=strlen($k);
								if (
									strtolower(substr($b,$i,$len))==strtolower($k)
									&& in_array($b{$i+$len}, $end_key_words)
									&& in_array($b{$i-1}, $begin_key_words)
									){
										$j=$len;
										$color='0A0';
										break;
									}
							}
						}
						if ($coloration['function words']===true && $j===false){
							reset($function_words);
							while (list($m, $k)=each($function_words)){
							//foreach ($key_words as $k){
								$len=strlen($k);
								if (
									strtolower(substr($b,$i,$len))==strtolower($k)
									&& in_array($b{$i+$len}, $end_key_words)
									&& (( $i-1>0 &&
										in_array($b{$i-1}, $begin_key_words))
										|| $i-1<0)
									){
										$j=$len;
										$color='0AD';
										break;
									}
							}
						}
						if ($j!==false){
							$b1=substr($b,0,$lignetraite).
								htmlentities(
								substr($b,$lignetraite,$i-$lignetraite)).
									'<span style="color:#'.$color.';">'.htmlentities(
									substr($b,$i,$j)).'</span>';
							$b=$b1.substr($b,$i+$j);
							$i=strlen($b1);
							$lignetraite=$i;
						}
					}
				break;
			}
			if ($b!==$b_old){
				$b_old=$b;
				$length=strlen($b)+1;
			}
		}
		$b=substr($b,0,$lignetraite).htmlentities(substr($b,$lignetraite));
		$n=($a%2==0)?1:2;
		$var.='<span class="ligne'.$n.'">'.($a+1).'</span> '.$b.'<br />
';
	}
	return $var;
}

?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec une capture IMAGES GENETIQUES
Source avec Zip Source avec une capture RUBIX CUBE
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec Zip PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.
Source avec une capture ECRIRE UN TEXTE EN CERCLE SUR UNE IMAGE

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

CRÉER UN PARSEUR LL par Morphinof
Source avec Zip LEVELPARSER par jonguignolo
COLORATION DE MOTS-CLÉS par maxroucool
FILTRE POUR NEWSLETTERS GMAIL par durealex
FICHIER XML => TABLEAU ASSOCIATIF par durealex

Commentaires et avis

Commentaire de malalam le 26/05/2007 08:14:26 administrateur CS

Hello,

pas mal! Je peux pas tester ça ici, mais ça a l'air sympa. C'est simple, y a un tas de syntaxes possible...bien :-)
Moi j'aurais quand même scinder les différents colorations dans différentes fonctions/classes/fichiers (au choix), pour ne pas avoir à tout se trimbaler si on a besoin que d'une ou deux coloration.
Mais c'est un détail.
Je n'ai jamais vu d'aussi longs case, en tous cas :-)

Commentaire de iow4 le 26/05/2007 11:08:29

Faut vraiment en avoir envie pour recoder un tel script sachant que de très bon scripts existants le font très bien comme Geshi et sont personnalisable

Commentaire de coucou747 le 26/05/2007 11:17:29 administrateur CS

ca fait toujours plaisir... je suis con, je recode, c'est ma tarre, chacun en a une, laisse moi porter la mienne...

ouais, j'ai ete un gros debile de reinventer la roue, et probablement encore plus de la partager... une roue carree, ya que moi qui pourrait m'en servir...

Commentaire de Kirua le 26/05/2007 11:23:45

Ton site de test est down coucou ;)

Sinon, curiosité: pourquoi passer par le type MIME? Perso, j'aurais juste écrit 'C++' pour le type de coloration, mais le sens qu'il y a une explication bien sentie ^_^.

Commentaire de coucou747 le 26/05/2007 11:32:01 administrateur CS

kirua, oui je sais, mon pere a encore du mal traiter mon serveur :(
quand tu uploades un fichier sur ton serveur, tu recuperes le mime type directement, t'as pas besoin d'utiliser l'extention ou l'entete pour chercher le type de cette facon.

mais c'est vrai que c'est mal concu, j'ai fait ca il y a un moment, et j'ai pas retouche depuis... J'ai juste fait du debug...

Commentaire de iow4 le 26/05/2007 13:14:32

CouCou747 : ne me fait pas dire ce que je n'ai pas dit, tu as du courage et du mérite

Commentaire de coucou747 le 26/05/2007 13:21:04 administrateur CS

je ne suis pas un geni, quand je poste un truc, je ne suis (je pense) jamais le premier a poster ces fonctionalites....

Commentaire de codefalse le 26/05/2007 15:23:02 administrateur CS

l'idee est vraiment bonne, meme s'il doit exister la meme chose :p. J'aurai juste une remarque q formuler, dans le meme sens que Malalam, ce serait (a mon avis, apres ca n'engage que moi) plus interessant de separer les differentes fonctions dans chaques fichiers, afin de pouvoir specifier ce que l'on veut, et ca allegerait le code et le rendrait plus facile a comprendre et a travailler :)

Commentaire de coucou747 le 26/05/2007 15:43:54 administrateur CS

codefalse, amuse toi, prend chaque source de ce site, et cherches en une autre qui fait pareil... a mon avis, pour chaque source tu devrais trouver

le probleme, c'est que tout les langages ont des choses en commun... pour separer, faudrait faire des choses pas clean et couteuses en perfs... enfin je crois...

Commentaire de codefalse le 26/05/2007 15:59:29 administrateur CS

"meme s'il doit exister la meme chose :p", j'ai dit ca pour reprendre l'idee de iow4. ce n'etait pas une critique negative.
Peut-on te dire certaine choses ou ton humeur (ego ?) ne l'accepte pas ? Car a chaques fois que je te dit quelque chose tu le prends mal, alors qu'il n'y avait aucune mauvaise action de ma part !

Commentaire de coucou747 le 26/05/2007 16:01:51 administrateur CS

tu m'as fait une remarque inutile, je te l'ai signalee, c'est tout... je ne l'ai pas mal pris

Commentaire de codefalse le 26/05/2007 16:09:02 administrateur CS

la premiere partie l'etait peut-etre, maie je ne pense pas aue la deuxieme le soi.
tu dit que séparer les choses que les langages ont en commun peut-être couteux en pefs. Apres faut voir comment sera construit la chose. Plusieurs application de coloration syntaxique utilises des fichiers externes pour l'affichage:
Dans ton cas, ce qui pourrait être interessant, c'est de faire un fichier general, qui contiendra ce que l'on trouve dans tous les langages (bloc conditionnel, boucles, boolean, etc), et un fichier propre à chaque langages. Comme ca tu inclut automatiquement le fichier general et ensuite en fonction de type de fichier, tu inclut le bon element. Dans l'idée, tu a Geany (IDE) qui fait ca, Scite, ...

Commentaire de coucou747 le 26/05/2007 16:11:34 administrateur CS

ca ne changerait que les choses qui se deroulent entre les lignes 125 et 640... et un include c'est couteux...

Commentaire de Kirua le 26/05/2007 18:37:42

Wah, vous prenez pas le bec comme ça ^_^.

Et puis, de mon point de vue, si tu ne peux pas te permettre le surcoût d'un include, change de langage coucou :D just kidding. Mais avec anthomicro (l'est parti lui?), il y a eu une vague d'optmiseur-fou complètement surévaluée à mon sens. A un moment, faut se rendre compte que le temps que tu passes à te demander si c'est OK de faire un include ou non, il est bien plus long que celui que tu gagnes à faire "ce qu'il faut". Du reste, travailler par module, c'est une bonne pratique en soi: ça fait gagner du temps de prog ;).

Commentaire de coucou747 le 26/05/2007 22:01:21 administrateur CS

que dire... kirua, je me mets progressivement au perl, mais c'est ... complique... enfin j'espere que tu comprends qu'en php, je suis plutot a l'aise (ca ne veut pas dire que je connaisse toutes les fonctions classiques par coeur, mais les plus usuelles, et que je sais ou chercher les autres) donc voila, je fais ca petit a petit...
ce code etait a l'origine sur un p75 qui avait 64 mo de ram...
antho, je ne sais pas exactement ce qui lui arrive... j'ai l'impression qu'il ne fait, depuis un an, que coder et recoder son site, sans faire de choses disons exploitables / grand public, si tu vois ce que je veux dire (une classe ?) :p

Aujourd'hui, comme tu le disais, mon serveur est mort, je le remettrais probablement en marche bientot, mais je ne sais toujours pas pourquoi (mes sources ici presentes sont entre 2 et 6 fois plus visites que mon propre site), mon site, c'est 18 000 lignes en tout (15 000 utiles), dedans, t'as des choses ridiculement tordues, que j'avais places dans l'espoir de le reprendre plus tard... ca n'a jamais ete fait, mon site a grossi, et c'est disons un travail impossible aujourd'hui... j'ai pas de classe template, ma classe sql ne fait qu'un bench, je n'ai pas d'Exception, c'est ... un vieux site... Je poste ce qui peut etre utile, sous la forme que j'avais donnee a l'epoque... Separer en includes c'est a mon gout pas une methode propre...

Commentaire de LeFauve42 le 29/05/2007 09:46:46

Une solution simple pour un problème simple.
Si je peux me permettre une petite remarque, je pense que tu pourrais simplifier la génération des mots clef PHP en utilisant 'get_extension_funcs()' (ce qui aurait en plus l'avantage de gérer automatiquement les nouveaux mots clef au fil des nouvelles versions de PHP).
Eric

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Principe de la coloration syntaxique [ par Teclis01 ] Voilà en fait j'aurais aimé savoir comment on fait de la coloration syntaxique ...Le fait est que a première vu il faut faire une etude de cas et fair Probleme : Coloration syntaxique Dreamweaver [ par skab ] Bonjour jj'ai un petit souci fort d&#233;sagr&#233;able, la coloration syntaxique a disparu comme ca sans rien ds dreamweaver, j'ai beau reinstaller Cryptage des sources PHP [ par Will28 ] Bonjour,&nbsp;je voulais savoir si quelqu'un pouvait me renseigner sur le cryptage des sources PHP, et plus sp&#233;cialement sur les produit Zend.En Cours en ligne ! [ par Zart ] J'ai fait un truc de consultation de codes sources en ligne : http://traaaz.free.fr/cours/ pour des cours de web en gros !!! En fait j'ai assembl&#233 [INFO ADMIN] Nouveauté sur les sources [ par malalam ] Salut tout le monde :-)Il y a une petite nouveaut&#233; sur les sources : la possibilit&#233; d'ajouter des mots clefs associ&#233;s.C'est un ajout de récupéré le code sources d'une page [ par max201 ] Salut,Est-ce que quelqu'un sait comment je peut r&#233;cup&#233;r&#233; le code sources d'une page php, attention je dis bien PHP. J'aimerais r&#233;c comment est hébegé CodeS-SourceS ? [ par fyav ] Bonjour &#224; tous, au vu du tr&#232;s bons fonctionnement des sites de Codes-Sources, je souhaiterais savoir, si c'est pas top secret, comment est f recherche code sources !!! [ par nebilphp ] Salut a tous , voila je suis en train de me faire un petit site web perso , j'ai appris comme beaucoup seul&nbsp; , mais la je cale je cherche une p Pitier [ par yoman64 ] Venez déposer vos sources:www.php-kode.fr.st (VB,c++,php) SVP ,pitier juste une source , ya que 12 sources en tout sur le site dont 7 de moi :( et seu Recherche Programmeur PHP Bénévole [ par wbr ] Bonjour. Vu que mes capacitées côté php sont TRÈS médiocres, et que la dernière offre que j'ai eu pour ma demande était de 210euros, je recherche dése


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales