Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source



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

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
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 :-)

signaler à un administrateur
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

signaler à un administrateur
Commentaire de coucou747 le 26/05/2007 11:17:29

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...

signaler à un administrateur
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 ^_^.

signaler à un administrateur
Commentaire de coucou747 le 26/05/2007 11:32:01

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...

signaler à un administrateur
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

signaler à un administrateur
Commentaire de coucou747 le 26/05/2007 13:21:04

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

signaler à un administrateur
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 :)

signaler à un administrateur
Commentaire de coucou747 le 26/05/2007 15:43:54

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...

signaler à un administrateur
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 !

signaler à un administrateur
Commentaire de coucou747 le 26/05/2007 16:01:51

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

signaler à un administrateur
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, ...

signaler à un administrateur
Commentaire de coucou747 le 26/05/2007 16:11:34

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

signaler à un administrateur
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 ;).

signaler à un administrateur
Commentaire de coucou747 le 26/05/2007 22:01:21

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...

signaler à un administrateur
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 Remerciements [ par David_monchy ] Aujourd'hui, c'est mon premier jour de vacances... Jusqu'à hier, j'était en stage, et je devais développer un chat en PHP/MySQL. Au début, je n'était Question de 'parsing' je pense... [ par Tit0x ] Hello tout l'monde :) J'ai un site qui se présente sous la forme suivante : J'ai 4 select. Quand j'ai fini de choisir les 4 selects, une page s'aff


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,889 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.