|
Trouver une ressource
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�ant un formatage particulier :
-
- Cette coloration synthaxique g�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�tilis� 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�lare les param�res par d�aut de la coloration.
- $coloration=array();
- //si les instructions pr�rocesseurs commencent par #
- $coloration['#=preproc']=false;
- //si les commentaires commencent par #
- $coloration['#=comment']=false;
- //si on a le ph�om�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�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�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�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�es qui d�imitent les mots clefs : la fin et le d�ut
- $begin_key_words=$end_key_words=array(
- '(', ')', '[', ']', '{', '}',
- "\n", "\t", "\r",
- ' ', '','=',
- '+','-','*','/',
- '!',';', '.',',',
- '<','>');
- //les carat�es color� apr� 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�uniquement sur des plugins pour X-Chat)
- //exemple : amsn est fait en tcl
- //les m�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�
- $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�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�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�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�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�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�avec php.ini)
- //param�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)).
- '     ';
- $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)).' ';
- $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�, alors que :
- "salut \\""
- alors la chaine est termin� !
- Donc, la v�ification du $b{$i-1}
- doit �re accompagn� 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�ant un formatage particulier :
Cette coloration synthaxique g�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�tilis� 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�lare les param�res par d�aut de la coloration.
$coloration=array();
//si les instructions pr�rocesseurs commencent par #
$coloration['#=preproc']=false;
//si les commentaires commencent par #
$coloration['#=comment']=false;
//si on a le ph�om�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�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�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�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�es qui d�imitent les mots clefs : la fin et le d�ut
$begin_key_words=$end_key_words=array(
'(', ')', '[', ']', '{', '}',
"\n", "\t", "\r",
' ', '','=',
'+','-','*','/',
'!',';', '.',',',
'<','>');
//les carat�es color� apr� 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�uniquement sur des plugins pour X-Chat)
//exemple : amsn est fait en tcl
//les m�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�
$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�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�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�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�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�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�avec php.ini)
//param�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)).
'     ';
$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)).' ';
$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�, alors que :
"salut \\""
alors la chaine est termin� !
Donc, la v�ification du $b{$i-1}
doit �re accompagn� 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
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
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ésagréable, la coloration syntaxique a disparu comme ca sans rien ds dreamweaver, j'ai beau reinstaller
Cryptage des sources PHP [ par Will28 ]
Bonjour, je voulais savoir si quelqu'un pouvait me renseigner sur le cryptage des sources PHP, et plus spé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é
[INFO ADMIN] Nouveauté sur les sources [ par malalam ]
Salut tout le monde :-)Il y a une petite nouveauté sur les sources : la possibilité d'ajouter des mots clefs associé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écupéré le code sources d'une page php, attention je dis bien PHP. J'aimerais réc
comment est hébegé CodeS-SourceS ? [ par fyav ]
Bonjour à tous, au vu du trè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 , 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|