Page 1 sur 2

colorisation de syntaxe

Posté : 15 juin 2008, 12:17
par djtec
Bonjour,

Voilà j'utilise ce code pour colorer mon code php:
function color_php($script) 
	{
  	 	$script = str_replace(""", '"', $script);
    	$script.= "\n";

    	for ($i = 0, $as = 0, $gs = 0, $gd = 0, $com = 0, $coms = 0, $tmp = '', $tmp2 = '', $tmp_script = '', $tmp2_script = ''; $i <= strlen($script); $i++) 
			{
        		if ($script[$i] == "\\") 
					{
            			$as = ($as == 1) ? 0 : 1;
        			}

        		if ($gd == 0 && $gs == 0 && $com == 0 && $coms == 0) 
					{
            			if ($script[$i] == "/" && $script[$i + 1] == "*") 
							{
                				// Commentaires en /* commentaire */
                				$tmp2_script = "<font color=#009900>";
                				$tmp = '';
                				$com = 1;
            		}
            	elseif ($script[$i] == "/" && $script[$i + 1] == "/") 
					{
                		// Commentaires en // commentaire
                		$tmp2_script = "<font color=#009900>";
                		$tmp = '';
               			$com = 1;
                		$coms = 1;
            		}
            	elseif ($script[$i] == "#") 
					{
                		// Commentaires en # commentaire
                		$tmp2_script = "<font color=#009900>";
                		$tmp = '';
                		$com = 1;
                		$coms = 1;
            		}
        	}
        elseif ($gd == 0 && $gs == 0 && $com == 1) 
			{
            	if ($script[$i] == "*" && $script[$i + 1] == "/" && $coms == 0) 
					{
                		// Fin des commentaires en /* commentaire */
                		$tmp_script.= strip_tags($tmp)."*/</font>";
                		$i+= 2;
                		$com = 0;
            		}
            	elseif ($script[$i] == "\n" && $coms == 1) 
					{
            	    	// Fin des commentaires en // commentaire et # commentaire
                		$tmp_script.= strip_tags($tmp)."</font>\n";
                		$i+= 1;
                		$com = 0;
                		$coms = 0;
            		}
        	}

        if ($com == 0 && $as == 0) 
			{
            	if ($script[$i] == "'" && $gd == 0) 
					{
                		// Guillements simples '
                		if ($gs == 0) 
							{
                    			$tmp2_script = "<font color=#808080>";
                    			$tmp = '';
                    			$gs = 1;
                			} 
						else 
							{
                    			$tmp_script.= strip_tags($tmp)."'</font>";
                    			$tmp = '';
                    			$i+= 1;
                    			$gs = 0;
                			}
            		}

            	if ($script[$i] == '"' && $gs == 0) 
					{
                		// Guillements doubles "
                		if ($gd == 0) 
							{
                    			$tmp2_script = "<font color=#808080>";
                    			$tmp = '';
                    			$gd = 1;
                			} 
						else 
							{
                   				$tmp_script.= strip_tags($tmp).'"</font>';
                    			$tmp = '';
                    			$i+= 1;
                    			$gd = 0;
                			}
            		}
        	}

        if ($gd == 0 && $gs == 0 && $com == 0 && $coms == 0 && $i < strlen($script)) 
			{
            	$tmp2.= $script[$i];
        	}
        elseif ($tmp2 != "" || ($tmp2 != "" && $i >= strlen($script))) 
			{
            	$tmp2 = preg_replace('/([\(\)\{\}\+\*%\/\=~!\|\?:;\.,\-\[\]]+|&|<|>)/iS', '<font color=#000080>$1</font>', $tmp2);
            	$tmp2 = preg_replace('/\\\$([[:alnum:]_]+)/iSs', '<font color=#006699>$$1</font>', $tmp2);

            	/* Mots réservés et fonctions */
            	$tmp2 = preg_replace('/(([^a-z0-9_\\\$])(array|bool|break|case|char|class|
					continue|default|do|double|else|elseif|endfor|endif|endwhile|
					extends|float|for|function|global|if|include|int|integer|
					long|mixed|new|object|old_function|php|real|require|return|
					static|string|switch|var|void|while|__FILE__|__LINE__|E_ERROR|
					E_NOTICE|E_PARSE|E_WARNING|FALSE|PHP_OS|PHP_VERSION|TRUE|@)([^a-z0-9_]))/iS'
				, '$2<font color=#000080>$3</font>$4', $tmp2);
				
            	$tmp2 = preg_replace('/(([^a-z0-9_\\\$])(Abs|Acos|AddSlashes|apache_lookup_uri|
					apache_note|array|array_walk|arsort|Asin|asort|Atan|Atan2|base_convert|
					base64_decode|base64_encode|basename|bin2hex|BinDec|Ceil|chdir|checkdate|
					checkdnsrr|chgrp|chmod|Chop|chown|Chr|chunk_split|clearstatcache|closedir|
					closelog|connection_aborted|connection_status|connection_timeout|
					convert_cyr_string|copy|Cos|count|crypt|current|date|dblist|dbmclose|
					dbmdelete|dbmexists|dbmfetch|dbmfirstkey|dbminsert|dbmnextkey|dbmopen|
					dbmreplace|debugger_off|debugger_on|DecBin|DecHex|DecOct|delete|die|
					dir|dirname|diskfreespace|dl|doubleval|each|echo|empty|end|ereg|
					ereg_replace|eregi|eregi_replace|error_log|error_reporting|
					escapeshellcmd|eval|exec|exit|Exp|explode|extension_loaded|
					extract|fclose|feof|fgetc|fgetcsv|fgets|fgetss|file|file_exists|
					fileatime|filectime|filegroup|fileinode|filemtime|fileowner|
					fileperms|filepro|filesize|filetype|flock|Floor|flush|fopen|
					fpassthru|fputs|fread|fseek|fsockopen|ftell|function_exists|
					fwrite|get_cfg_var|get_current_user|get_magic_quotes_gpc|
					get_magic_quotes_runtime|get_meta_tags|getallheaders|getdate|
					getenv|gethostbyaddr|gethostbyname|gethostbynamel|GetImageSize|
					getlastmod|getmxrr|getmyinode|getmypid|getmyuid|getrandmax|getrusage|
					gettimeofday|gettype|gmdate|gmmktime|gzclose|gzeof|gzfile|gzgetc|gzgets|
					gzgetss|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzwrite|
					header|HexDec|htmlentities|htmlspecialchars|ignore_user_abort|ImageArc|
					ImageChar|ImageCharUp|ImageColorAllocate|ImageColorAt|ImageColorClosest|
					ImageColorExact|ImageColorResolve|ImageColorSet|ImageColorsForIndex|
					ImageColorsTotal|ImageColorTransparent|ImageCopyResized|ImageCreate|
					ImageCreateFromGif|ImageDashedLine|ImageDestroy|ImageFill|ImageFilledPolygon|
					ImageFilledRectangle|ImageFillToBorder|ImageFontHeight|ImageFontWidth|
					ImageGif|ImageInterlace|ImageLine|ImageLoadFont|ImagePolygon|ImagePSBBox|
					ImagePSEncodeFont|ImagePSFreeFont|ImagePSLoadFont|ImagePSText|
					ImageRectangle|ImageSetPixel|ImageString|ImageStringUp|ImageSX|
					ImageSY|ImageTTFBBox|ImageTTFText|implode|intval|iptcparse|
					is_array|is_dir|is_double|is_executable|is_file|is_float|is_int|is_integer|
					is_link|is_long|is_object|is_readable|is_real|is_string|is_writeable|isset|
					join|key|ksort|leak|link|linkinfo|list|Log|Log10|lstat|ltrim|mail|max|md5|
					microtime|min|mkdir|mktime|msql|msql_affected_rows|msql_close|msql_connect|
					msql_create_db|msql_createdb|msql_data_seek|msql_dbname|msql_drop_db|
					msql_dropdb|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|
					msql_fetch_row|msql_field_seek|msql_fieldflags|msql_fieldlen|
					msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|
					msql_freeresult|msql_list_dbs|msql_list_fields|msql_list_tables|
					msql_listdbs|msql_listfields|msql_listtables|msql_num_fields|
					msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|
					msql_query|msql_regcase|msql_result|msql_select_db|msql_selectdb|
					msql_tablename|mt_getrandmax|mt_rand|mt_srand|mysql|
					mysql_affected_rows|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|
					mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_fetch_array|
					mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|
					mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|
					mysql_field_table|mysql_field_type|mysql_free_result|mysql_insert_id|
					mysql_list_dbs|mysql_list_fields|mysql_list_tables|mysql_num_fields|
					mysql_num_rows|mysql_pconnect|mysql_query|mysql_result|mysql_select_db|
					mysql_tablename|next|nl2br|number_format|OctDec|odbc_autocommit|
					odbc_binmode|odbc_close|odbc_close_all|odbc_commit|odbc_connect|
					odbc_cursor|odbc_do|odbc_exec|odbc_execute|odbc_fetch_into|odbc_fetch_row|
					odbc_field_len|odbc_field_name|odbc_field_type|odbc_free_result|odbc_longreadlen|
					odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_result|
					odbc_result_all|odbc_rollback|odbc_setoption|opendir|openlog|Ora_Bind|
					Ora_Close|Ora_ColumnName|Ora_ColumnType|Ora_Commit|Ora_CommitOff|Ora_CommitOn|
					Ora_Error|Ora_ErrorCode|Ora_Exec|Ora_Fetch|Ora_GetColumn|Ora_Logoff|Ora_Logon|
					Ora_Open|Ora_Parse|Ora_Rollback|Ord|pack|parse_str|parse_url|passthru|pclose|
					pfsockopen|pg_Close|pg_cmdTuples|pg_Connect|pg_DBname|pg_ErrorMessage|pg_Exec|
					pg_Fetch_Array|pg_Fetch_Object|pg_Fetch_Row|pg_FieldIsNull|pg_FieldName|
					pg_FieldNum|pg_FieldPrtLen|pg_FieldSize|pg_FieldType|pg_FreeResult|pg_GetLastOid|
					pg_Host|pg_loclose|pg_locreate|pg_loopen|pg_loread|pg_loreadall|pg_lounlink|
					pg_lowrite|pg_NumFields|pg_NumRows|pg_Options|pg_pConnect|pg_Port|pg_Result|
					pg_tty|phpinfo|phpversion|pi|popen|pos|pow|preg_match|preg_match_all|preg_replace|
					preg_split|prev|print|printf|putenv|quoted_printable_decode|QuoteMeta|rand|range|
					rawurldecode|rawurlencode|readdir|readfile|readgzfile|readlink|
					register_shutdown_function|rename|reset|rewind|rewinddir|rmdir|round|rsort|
					sem_acquire|sem_get|sem_release|serialize|set_file_buffer|set_magic_quotes_runtime|
					set_socket_blocking|set_time_limit|setcookie|setlocale|settype|shm_attach|
					shm_detach|shm_get_var|shm_put_var|shm_remove|shm_remove_var|shuffle|
					similar_text|Sin|sizeof|sleep|sort|soundex|split|sprintf|sql_regcase|Sqrt|
					srand|stat|str_replace|strchr|strcmp|strcspn|strftime|strip_tags|
					StripSlashes|strlen|strpos|strrchr|strrev|strrpos|strspn|strstr|strtok|
					strtolower|strtoupper|strtr|strval|substr|symlink|syslog|system|Tan|
					tempnam|time|touch|trim|uasort|ucfirst|ucwords|uksort|umask|uniqid|unlink|
					unpack|unserialize|unset|urldecode|urlencode|usleep|usort|virtual|substr_count|
					array_flip|get_html_translation_table|imagegammacorrect)([^a-z0-9_]))/iS'
				, '$2<a href="http://fr3.php.net/manual/fr/function.$3.php" target="_blank"><font color="#800000">$3</font></a>$4', $tmp2);

           	$tmp_script.= $tmp2;
           	 	$tmp2 = '';
            	$tmp.= $script[$i];
        	} 
		else 
			{
            	$tmp.= $script[$i];
        	}

        $tmp_script.= $tmp2_script;
        $tmp2_script = '';

        if ($script[$i] != "\\") 
			{
            	$as = 0;
        	}
    	}

    	$tmp_script = substr($tmp_script, 0, -1);
	
    	//Lignes à rajouer si vous ne passez pas par la fonction coloriser_html() :
    	$tmp_script = nl2br($tmp_script);
    	$tmp_script = str_replace("\t", "    ", $tmp_script);
    	$tmp_script = str_replace("  ", "  ", $tmp_script);

		$return_code = '<p>Php:</p><p><pre>'.$tmp_script.'</pre></p>';
		      
		return $return_code;
	}

Et dans ce code il y a un lien qui vas vers php.net mais le problème c'est que les fonctions ne s'écrive pas pareil dans l'url.

Exemple: pour preg_match_all le lien est http://fr3.php.net/manual/fr/function.p ... ch-all.php

Donc il faut remplacer les _ par - mais juste dans le lien.

Et là je bloque.

J'ai éssayé quelque truc mais sans succès.

Donc si quelqu'un avait une idée.

Merci d'avance.

Posté : 15 juin 2008, 13:01
par Cyrano
Regarde dans la doc sur str_replace().

Posté : 15 juin 2008, 13:11
par djtec
J'ai essayé avec cette fonction mais je ne vois pas comment changé les _ en - mais juste dans l'url

Posté : 15 juin 2008, 13:16
par Cyrano
Si tu nous montrais ce que tu as essayé, ça faciliterait un peu les choses, on ne devinera pas s'il y a une erreur...

Posté : 15 juin 2008, 13:23
par djtec
J'ai essayé ceci
            	$tmp2 = preg_replace('/(([^a-z0-9_\\\$])(Abs|Acos|AddSlashes|apache_lookup_uri|
					apache_note|array|array_walk|arsort|Asin|asort|Atan|Atan2|base_convert|
					base64_decode|base64_encode|basename|bin2hex|BinDec|Ceil|chdir|checkdate|
					checkdnsrr|chgrp|chmod|Chop|chown|Chr|chunk_split|clearstatcache|closedir|
					closelog|connection_aborted|connection_status|connection_timeout|
					convert_cyr_string|copy|Cos|count|crypt|current|date|dblist|dbmclose|
					dbmdelete|dbmexists|dbmfetch|dbmfirstkey|dbminsert|dbmnextkey|dbmopen|
					dbmreplace|debugger_off|debugger_on|DecBin|DecHex|DecOct|delete|die|
					dir|dirname|diskfreespace|dl|doubleval|each|echo|empty|end|ereg|
					ereg_replace|eregi|eregi_replace|error_log|error_reporting|
					escapeshellcmd|eval|exec|exit|Exp|explode|extension_loaded|
					extract|fclose|feof|fgetc|fgetcsv|fgets|fgetss|file|file_exists|
					fileatime|filectime|filegroup|fileinode|filemtime|fileowner|
					fileperms|filepro|filesize|filetype|flock|Floor|flush|fopen|
					fpassthru|fputs|fread|fseek|fsockopen|ftell|function_exists|
					fwrite|get_cfg_var|get_current_user|get_magic_quotes_gpc|
					get_magic_quotes_runtime|get_meta_tags|getallheaders|getdate|
					getenv|gethostbyaddr|gethostbyname|gethostbynamel|GetImageSize|
					getlastmod|getmxrr|getmyinode|getmypid|getmyuid|getrandmax|getrusage|
					gettimeofday|gettype|gmdate|gmmktime|gzclose|gzeof|gzfile|gzgetc|gzgets|
					gzgetss|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzwrite|
					header|HexDec|htmlentities|htmlspecialchars|ignore_user_abort|ImageArc|
					ImageChar|ImageCharUp|ImageColorAllocate|ImageColorAt|ImageColorClosest|
					ImageColorExact|ImageColorResolve|ImageColorSet|ImageColorsForIndex|
					ImageColorsTotal|ImageColorTransparent|ImageCopyResized|ImageCreate|
					ImageCreateFromGif|ImageDashedLine|ImageDestroy|ImageFill|ImageFilledPolygon|
					ImageFilledRectangle|ImageFillToBorder|ImageFontHeight|ImageFontWidth|
					ImageGif|ImageInterlace|ImageLine|ImageLoadFont|ImagePolygon|ImagePSBBox|
					ImagePSEncodeFont|ImagePSFreeFont|ImagePSLoadFont|ImagePSText|
					ImageRectangle|ImageSetPixel|ImageString|ImageStringUp|ImageSX|
					ImageSY|ImageTTFBBox|ImageTTFText|implode|intval|iptcparse|
					is_array|is_dir|is_double|is_executable|is_file|is_float|is_int|is_integer|
					is_link|is_long|is_object|is_readable|is_real|is_string|is_writeable|isset|
					join|key|ksort|leak|link|linkinfo|list|Log|Log10|lstat|ltrim|mail|max|md5|
					microtime|min|mkdir|mktime|msql|msql_affected_rows|msql_close|msql_connect|
					msql_create_db|msql_createdb|msql_data_seek|msql_dbname|msql_drop_db|
					msql_dropdb|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|
					msql_fetch_row|msql_field_seek|msql_fieldflags|msql_fieldlen|
					msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|
					msql_freeresult|msql_list_dbs|msql_list_fields|msql_list_tables|
					msql_listdbs|msql_listfields|msql_listtables|msql_num_fields|
					msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|
					msql_query|msql_regcase|msql_result|msql_select_db|msql_selectdb|
					msql_tablename|mt_getrandmax|mt_rand|mt_srand|mysql|
					mysql_affected_rows|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|
					mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_fetch_array|
					mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|
					mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|
					mysql_field_table|mysql_field_type|mysql_free_result|mysql_insert_id|
					mysql_list_dbs|mysql_list_fields|mysql_list_tables|mysql_num_fields|
					mysql_num_rows|mysql_pconnect|mysql_query|mysql_result|mysql_select_db|
					mysql_tablename|next|nl2br|number_format|OctDec|odbc_autocommit|
					odbc_binmode|odbc_close|odbc_close_all|odbc_commit|odbc_connect|
					odbc_cursor|odbc_do|odbc_exec|odbc_execute|odbc_fetch_into|odbc_fetch_row|
					odbc_field_len|odbc_field_name|odbc_field_type|odbc_free_result|odbc_longreadlen|
					odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_result|
					odbc_result_all|odbc_rollback|odbc_setoption|opendir|openlog|Ora_Bind|
					Ora_Close|Ora_ColumnName|Ora_ColumnType|Ora_Commit|Ora_CommitOff|Ora_CommitOn|
					Ora_Error|Ora_ErrorCode|Ora_Exec|Ora_Fetch|Ora_GetColumn|Ora_Logoff|Ora_Logon|
					Ora_Open|Ora_Parse|Ora_Rollback|Ord|pack|parse_str|parse_url|passthru|pclose|
					pfsockopen|pg_Close|pg_cmdTuples|pg_Connect|pg_DBname|pg_ErrorMessage|pg_Exec|
					pg_Fetch_Array|pg_Fetch_Object|pg_Fetch_Row|pg_FieldIsNull|pg_FieldName|
					pg_FieldNum|pg_FieldPrtLen|pg_FieldSize|pg_FieldType|pg_FreeResult|pg_GetLastOid|
					pg_Host|pg_loclose|pg_locreate|pg_loopen|pg_loread|pg_loreadall|pg_lounlink|
					pg_lowrite|pg_NumFields|pg_NumRows|pg_Options|pg_pConnect|pg_Port|pg_Result|
					pg_tty|phpinfo|phpversion|pi|popen|pos|pow|preg_match|preg_match_all|preg_replace|
					preg_split|prev|print|printf|putenv|quoted_printable_decode|QuoteMeta|rand|range|
					rawurldecode|rawurlencode|readdir|readfile|readgzfile|readlink|
					register_shutdown_function|rename|reset|rewind|rewinddir|rmdir|round|rsort|
					sem_acquire|sem_get|sem_release|serialize|set_file_buffer|set_magic_quotes_runtime|
					set_socket_blocking|set_time_limit|setcookie|setlocale|settype|shm_attach|
					shm_detach|shm_get_var|shm_put_var|shm_remove|shm_remove_var|shuffle|
					similar_text|Sin|sizeof|sleep|sort|soundex|split|sprintf|sql_regcase|Sqrt|
					srand|stat|str_replace|strchr|strcmp|strcspn|strftime|strip_tags|
					StripSlashes|strlen|strpos|strrchr|strrev|strrpos|strspn|strstr|strtok|
					strtolower|strtoupper|strtr|strval|substr|symlink|syslog|system|Tan|
					tempnam|time|touch|trim|uasort|ucfirst|ucwords|uksort|umask|uniqid|unlink|
					unpack|unserialize|unset|urldecode|urlencode|usleep|usort|virtual|substr_count|
					array_flip|get_html_translation_table|imagegammacorrect)([^a-z0-9_]))/iS'
				, '$2<a href="http://fr3.php.net/manual/fr/function.'.str_replace('_', '-', '$3').'.php" target="_blank"><font color="#800000">$3</font></a>$4', $tmp2);

Posté : 15 juin 2008, 13:24
par katagoto
Tu va être dégouté mais y a une fonction dédié à ça : highlight_string() (pour les chaines) et hilight_file (pour les fichiers) :roll:

Posté : 15 juin 2008, 13:34
par djtec
Cette fonction n'éxécute pas la même chose car mon script ne fait pas que coloriser le code mais affiche un lien vers les fonctions de php.net

Posté : 17 juin 2008, 11:03
par Hywan
Hey :),

Un léger écart (pas encore un hors-sujet) : il existe aussi l'excellent GeSHi. Tu devrais y jeter un œil car il fait ce que tu veux :).

Et sinon, comme Cyrano, montre nous le code qui te tracasse (avec exemple et erreurs).

Posté : 17 juin 2008, 19:44
par djtec
Je connais très bien geshi mais il est très difficile de modifier les couleur c'est pour cela que j'essaye une autre méthode.

Bref, la seule erreur que j'ai c'est quand je vais sur le site de php.net

Voici l'url généré par mon script:

http://fr3.php.net/manual/fr/function.preg_replace.php

Test là tu vera l'erreur en faites je voudrais que tout les _ se transforme en - mais juste dans le lien car quand tu fait:

http://fr3.php.net/manual/fr/function.preg-replace.php

Là çà fonctionne

Posté : 17 juin 2008, 23:14
par Hywan
Tu fais aussi http://php.net/preg_replace et ça fonctionne tout aussi bien.

Je prends que tu as tout simplement oublié d'échapper le caractère - (tiret). Échapper consiste à mettre un backslash (\), avant le tirer : \-. Montre voir comment tu as fait le remplacement ? Mais j'ai du mal aussi à saisir pourquoi tu n'utilises pas les fonctions hightlight_*() … Tu sais que tu peux modifier les couleurs avec les instructions du fichier php.ini ?

Posté : 18 juin 2008, 08:18
par savageman
Un léger écart (pas encore un hors-sujet) : il existe aussi l'excellent GeSHi. Tu devrais y jeter un œil car il fait ce que tu veux :).
Suite de l'écart, qui commence à grandir.
Geshi, excellent ? :shock:
Toi qui est au courant d'un peu pleins de trucs, je pensais que tu savais... que Geshi est super lent !
Moi je conseille fshl (FAST syntax highlighter) ou bien Pygments (écrit en Python, mais en le rendant accessible comme service web avec XML-RPC, ça roxx).

Posté : 18 juin 2008, 09:07
par Hywan
GeSHi est lent parce qu'il utilise énormément de mots-clé. Les fichiers sont assez lourds, mais sinon, je pense que c'est plutôt efficace. J'ai jamais vraiment regardé le code en profondeur, mais en quelques passent rapides, j'avais trouvé ça plutôt pratique.

Je ne connaissais pas fshl, ni pygments, je vais y jeter un œil :).

Posté : 18 juin 2008, 09:23
par Calimero
Geshi, excellent ? :shock:
Toi qui est au courant d'un peu pleins de trucs, je pensais que tu savais... que Geshi est super lent !
Moi je conseille fshl (FAST syntax highlighter) ou bien Pygments (écrit en Python, mais en le rendant accessible comme service web avec XML-RPC, ça roxx).
C'est vrai que GeSHi est très lent. Je ne connaissais pas les projets que tu as cités : fshl semble pas mal du tout (et surtout vraiment rapide !), je lui ai injecté plusieurs codes sources et il ne s'est pas planté dans la coloration. Bon, le choix des attributs de texte/couleurs par défaut est très moche à mon goût mais ça ne devrait pas poser trop de problèmes à adapter ;-) .

Un petit lien pour aller le tester : http://hvge.sk/scripts/fshl/online/index.php

Posté : 18 juin 2008, 10:38
par savageman
Oui enfin si le problème c'est juste les couleurs ça se change facilement.
En contrepartie fshl gère bien moins de langages que Geshi (mais il le fait beaucoup plus rapidement !).

Posté : 19 juin 2008, 03:05
par djtec
Bonjour,

Je fais comme ceci pour le remplacement:
$tmp2 = preg_replace('/(([^a-z0-9_\\\$])(Abs|Acos|AddSlashes|apache_lookup_uri|
                    apache_note|array|array_walk|arsort|Asin|asort|Atan|Atan2|base_convert|
                    base64_decode|base64_encode|basename|bin2hex|BinDec|Ceil|chdir|checkdate|
                    checkdnsrr|chgrp|chmod|Chop|chown|Chr|chunk_split|clearstatcache|closedir|
                    closelog|connection_aborted|tempnam|time|touch|
                    .........................................
                    trim|uasort|ucfirst|ucwords|uksort|umask|uniqid|unlink|
                    unpack|unserialize|unset|urldecode|urlencode|usleep|usort|virtual|substr_count|
                    array_flip|get_html_translation_table|imagegammacorrect)([^a-z0-9_]))/iS'
                , '$2<a href="http://fr3.php.net/manual/fr/function.'.str_replace('_', '-', '$3').'.php" target="_blank"><font color="#800000">$3</font></a>$4', $tmp2); 
Et la ou je suis hébergé je ne peut pas modifier mon php.ini donc voilà.

Je vais regarder fshl ça a l'air pas mal je le connaissait pas merci savageman pour fshl