online not hljs highlighter for colorizer code php syntax-highlighting

php - not - syntax highlight js



Resaltado de sintaxis PHP (10)

Otra opción es usar el programa GPL Highlight GUI de Andre Simon que está disponible para la mayoría de las plataformas. Convierte PHP (y otros lenguajes) a HTML, RTF, XML, etc. que luego puede cortar y pegar en la página que desea. De esta forma, el procesamiento solo se realiza una vez.

El HTML también está basado en CSS, por lo que puede cambiar el estilo a su gusto.

Personalmente, uso dp.SyntaxHighlighter , pero eso usa Javascript para el cliente, por lo que no satisface tus necesidades. Tiene un buen complemento de Windows Live que me parece útil.

Estoy buscando un motor de resaltado de sintaxis PHP que se pueda personalizar (es decir, puedo proporcionar mis propios tokenizadores para nuevos idiomas) y que pueda manejar varios idiomas simultáneamente (es decir, en la misma página de salida). Este motor debe funcionar bien junto con las clases CSS , es decir, debe formatear la salida insertando elementos <span> que están adornados con atributos de class . Puntos de bonificación para un esquema extensible.

No busco un script de resaltado de sintaxis del lado del cliente (JavaScript).

Hasta ahora, estoy atrapado con GeSHi . Desafortunadamente, GeSHi falla abismalmente por varias razones. La razón principal es que los diferentes archivos de idioma definen estilos completamente diferentes e inconsistentes. He trabajado horas tratando de refactorizar las diferentes definiciones de idioma hasta un denominador común, pero dado que la mayoría de los archivos de definición son en sí mismos bastante malos, finalmente me gustaría cambiar.

Idealmente, me gustaría tener una API similar a CodeRay , Pygments o JavaScript dp.SyntaxHighlighter .

Aclaración:

Estoy buscando un código que resalte el software escrito en PHP, no para PHP (ya que necesito usarlo desde PHP).


[Marqué esta respuesta como Community Wiki porque específicamente no estás buscando Javascript]

http://softwaremaniacs.org/soft/highlight/ es una biblioteca de resaltado de sintaxis de PHP ( más la siguiente lista de otros idiomas admitidos ):

Python, Ruby, Perl, PHP, XML, HTML, CSS, Django, Javascript, VBScript, Delphi, Java, C ++, C #, Lisp, RenderMan (RSL y RIB), lenguaje incrustado de Maya, SQL, SmallTalk, Axapta, 1C, Ini , Diff, DOS .bat, Bash

Utiliza <span class = "keyword"> marcado de estilo.

También se ha integrado en el kit de herramientas dojo (como un proyecto dojox : dojox.lang.highlight )

Aunque no es la forma más popular de ejecutar un servidor web, estrictamente hablando, Javascript no solo se implementa en el lado del cliente, sino que también hay combinaciones de motor / plataforma JavaScript del lado del servidor .


Krijn Hoetmer''s PHP Highlighter proporciona una clase de PHP completamente personalizable para resaltar la sintaxis de PHP. El HTML que genera, valida bajo un doctype estricto y es completamente flexible con CSS.


Un poco tarde para sonar aquí, pero he estado trabajando en mi propia biblioteca de resaltado de sintaxis PHP. Todavía está en sus primeras etapas, pero lo estoy usando para todas las muestras de código en mi blog.

Acabo de comprobar Hyperlight. Se ve muy bien, pero está haciendo algunas cosas bastante locas. Bucles anidados, procesamiento línea por línea, etc. La clase principal tiene más de 1000 líneas de código.

Si estás interesado en algo simple y ligero, echa un vistazo a Nijikodo: http://www.craigiam.com/nijikodo



Tenía exactamente el mismo problema, pero como tenía poco tiempo y necesitaba una cobertura de código realmente buena, decidí escribir un envoltorio de PHP en la biblioteca de Pygments .

Se llama PHPygmentizator . Es realmente simple de usar. Escribí un manual muy básico. Como PHP es principalmente el lenguaje de Desarrollo web, subordiné la estructura a ese hecho y lo hice muy fácil de implementar en casi cualquier tipo de sitio web.

Admite archivos de configuración y, si eso no es suficiente, y alguien necesita modificar cosas en el proceso, también activa eventos .

Demostración de cómo funciona se puede encontrar básicamente en cualquier publicación de mi blog que contenga código fuente, este por ejemplo .

Con la configuración predeterminada, puede proporcionarle una cadena en este formato:

Any text here. [pygments=javascript] var a = function(ar1, ar2) { return null; } [/pygments] Any text.

Por lo tanto, resalta el código entre las etiquetas (las etiquetas se pueden personalizar en el archivo de configuración) y deja el resto intacto.

Además, ya hice una biblioteca de reconocimiento de sintaxis (utiliza algoritmo que probablemente se clasificaría como probabilidad bayesiana ) que reconoce automáticamente en qué bloque de código de idioma está escrito y puede engancharse fácilmente a uno de los eventos de PHPygmentizator para proporcionar reconocimiento automático de idioma. Probablemente lo haga público esta semana, ya que necesito embellecer un poco la estructura y escribir algunos documentos básicos. Si le proporciona suficientes datos de "aprendizaje", reconoce idiomas sorprendentemente bien, probé incluso javascripts e idiomas miniaturizados que tienen palabras clave y estructuras similares y nunca se ha cometido un error.


Como ninguna herramienta existente satisfacía mis necesidades, escribí la mía. Lo y behold:

Hyperlight

El uso es extremadamente fácil: solo use

<?php hyperlight($code, ''php''); ?>

para resaltar el código. También es relativamente fácil escribir nuevas definiciones de idioma, usando expresiones regulares y una máquina de estado poderosa pero simple. Por cierto, todavía necesito muchas definiciones, así que no dude en contribuir.



Encontré este rotulador de sintaxis genérico simple escrito en PHP aquí y lo modifiqué un poco:

<?php /** * Original => http://phoboslab.org/log/2007/08/generic-syntax-highlighting-with-regular-expressions * Usage => `echo SyntaxHighlight::process(''source code here'');` */ class SyntaxHighlight { public static function process($s) { $s = htmlspecialchars($s); // Workaround for escaped backslashes $s = str_replace(''////',''////<e>'', $s); $regexp = array( // Comments/Strings ''/( ///*.*?/*//| ////.*?/n| /#.[^a-fA-F0-9]+?/n| /&lt;/!/-/-[/s/S]+/-/-/&gt;| (?<!///)&quot;.*?(?<!///)&quot;| (?<!///)/'(.*?)(?<!///)/' )/isex'' => ''self::replaceId($tokens,/'$1/')'', // Punctuations ''/([/-/!/%/^/*/(/)/+/|/~/=/`/{/}/[/]/:/"/'<>/?/,/.//]+)/'' => ''<span class="P">$1</span>'', // Numbers (also look for Hex) ''/(?<!/w)( (0x|/#)[/da-f]+| /d+| /d+(px|em|cm|mm|rem|s|/%) )(?!/w)/ix'' => ''<span class="N">$1</span>'', // Make the bold assumption that an // all uppercase word has a special meaning ''/(?<!/w|>|/#)( [A-Z_0-9]{2,} )(?!/w)/x'' => ''<span class="D">$1</span>'', // Keywords ''/(?<!/w|/$|/%|/@|>)( and|or|xor|for|do|while|foreach|as|return|die|exit|if|then|else| elseif|new|delete|try|throw|catch|finally|class|function|string| array|object|resource|var|bool|boolean|int|integer|float|double| real|string|array|global|const|static|public|private|protected| published|extends|switch|true|false|null|void|this|self|struct| char|signed|unsigned|short|long )(?!/w|=")/ix'' => ''<span class="K">$1</span>'', // PHP/Perl-Style Vars: $var, %var, @var ''/(?<!/w)( (/$|/%|/@)(/-&gt;|/w)+ )(?!/w)/ix'' => ''<span class="V">$1</span>'' ); $tokens = array(); // This array will be filled from the regexp-callback $s = preg_replace(array_keys($regexp), array_values($regexp), $s); // Paste the comments and strings back in again $s = str_replace(array_keys($tokens), array_values($tokens), $s); // Delete the "Escaped Backslash Workaround Token" (TM) // and replace tabs with four spaces. $s = str_replace(array(''<e>'', "/t"), array('''', '' ''), $s); return ''<pre><code>'' . $s . ''</code></pre>''; } // Regexp-Callback to replace every comment or string with a uniqid and save // the matched text in an array // This way, strings and comments will be stripped out and wont be processed // by the other expressions searching for keywords etc. private static function replaceId(&$a, $match) { $id = "##r" . uniqid() . "##"; // String or Comment? if(substr($match, 0, 2) == ''//'' || substr($match, 0, 2) == ''/*'' || substr($match, 0, 2) == ''##'' || substr($match, 0, 7) == ''&lt;!--'') { $a[$id] = ''<span class="C">'' . $match . ''</span>''; } else { $a[$id] = ''<span class="S">'' . $match . ''</span>''; } return $id; } } ?>

Demostración: http://phpfiddle.org/lite/code/1sf-htn

Actualizar

Acabo de crear un puerto PHP de mi propio resaltador de sintaxis genérico JavaScript aquí → https://github.com/tovic/generic-syntax-highlighter/blob/master/generic-syntax-highlighter.php

Cómo utilizar:

<?php require ''generic-syntax-highlighter.php''; ?> <pre><code><?php echo SH(''&lt;div class="foo"&gt;&lt;/div&gt;''); ?></code></pre>


Podría valer la pena mirar Pear_TextHighlighter ( documentación )

Creo que, por defecto, no producirá html exactamente como lo desee, pero ofrece amplias capacidades de personalización (es decir, puede crear diferentes representadores / analizadores sintácticos)