colorisation de syntaxe

Eléphant du PHP | 451 Messages

15 juin 2008, 12:17

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.

Mammouth du PHP | 19672 Messages

15 juin 2008, 13:01

Regarde dans la doc sur str_replace().
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 451 Messages

15 juin 2008, 13:11

J'ai essayé avec cette fonction mais je ne vois pas comment changé les _ en - mais juste dans l'url

Mammouth du PHP | 19672 Messages

15 juin 2008, 13:16

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...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 451 Messages

15 juin 2008, 13:23

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);

Mammouth du PHP | 1668 Messages

15 juin 2008, 13:24

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:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 451 Messages

15 juin 2008, 13:34

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

ViPHP
ViPHP | 4674 Messages

17 juin 2008, 11:03

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).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 451 Messages

17 juin 2008, 19:44

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

ViPHP
ViPHP | 4674 Messages

17 juin 2008, 23:14

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 ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 185 Messages

18 juin 2008, 08:18

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

ViPHP
ViPHP | 4674 Messages

18 juin 2008, 09:07

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 :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 2287 Messages

18 juin 2008, 09:23

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
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 185 Messages

18 juin 2008, 10:38

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

Eléphant du PHP | 451 Messages

19 juin 2008, 03:05

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