Peinture sur sources (un truc qui fait de la coloration syntaxique)

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 / Exemple :


<?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; } ?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

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

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

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

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