colorisation de syntaxe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : colorisation de syntaxe

par Hywan » 19 juin 2008, 09:52

Si tu regardes le php.ini, tu verrais que c'est modifiable par tout le monde (PHP_INI_ALL), tu peux donc le modifier via ini_set().

Ensuite, c'est logique que ton truc ne fonctionne pas. Si tu regardes toujours le manuel pour la fonction preg_replace à l'exemple 4, il me semble qu'on parle de l'option e

par djtec » 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

par savageman » 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 !).

par Calimero » 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

par Hywan » 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 :).

par savageman » 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).

par Hywan » 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 ?

par djtec » 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

par Hywan » 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).

par djtec » 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

par katagoto » 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:

par djtec » 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);

par Cyrano » 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...

par djtec » 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

par Cyrano » 15 juin 2008, 13:01

Regarde dans la doc sur str_replace().