piapia123
es

HTML a código de salida de lenguajes backend

Web

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Convierte un bloque de HTML en sentencias de salida para ASP, VB.NET, JSP, PHP o Perl. Lo difícil nunca fueron las comillas, sino un puñado de trampas que se esconden bien: la familia VB duplica la comilla mientras la familia C la escapa con barra invertida, y equivocarse deja la página en blanco; un signo de dólar interpola dentro de las comillas dobles de PHP, así que un precio en tu marcado pierde un trozo sin avisar; y un `%>` dentro de una cadena JSP, o un `?>` dentro de PHP, cierra el bloque de script antes de tiempo — el resto de tu HTML aparece entonces como texto en la página, exactamente como hace `</script>` al incrustar marcado en JavaScript. Todo se maneja aquí por lenguaje, y lo que no se puede expresar se explica en un comentario del código generado.

Funciones

  • Cinco destinos: ASP clásico (VBScript), ASP.NET (VB.NET), JSP, PHP y Perl
  • Las comillas se escapan como quiere cada lenguaje: duplicadas en la familia VB, con barra invertida en PHP, Perl y JSP
  • Los signos de dólar en PHP y Perl, y las arrobas en Perl, se escapan para que no se interpreten como variables
  • Un %> del marcado se escribe como %\>, y el cierre de PHP como \x3f>, así que un bloque de script no puede terminar antes
  • Una sentencia de salida por línea, con los saltos de línea conservados en vez de comprimir el marcado en una sola línea
  • Los saltos de línea usan siempre \n y no una println dependiente de la plataforma, así que Windows y Linux producen el mismo archivo
  • Acepta entrada CRLF y LF, y siempre genera LF
  • Las líneas vacías y el salto final se tratan con fidelidad: ni una sentencia de más ni una de menos
  • Los comentarios salen en inglés, porque van a un archivo .jsp o .php
  • La salida lleva resaltado de sintaxis y se copia de una vez

Cómo se usa

  1. Pega el HTML que quieres imprimir
  2. Elige el lenguaje de destino
  3. Desactiva el escape de la etiqueta de cierre solo si tienes la certeza de que el marcado no contiene ninguna
  4. Copia las sentencias a tu archivo de plantilla

Preguntas frecuentes

¿Por qué una sentencia por línea en vez de una sola cadena grande?
Porque esa es la forma que puedes pegar en una plantilla y depurar línea a línea. Una sola cadena es más corta, pero necesita el mecanismo multilínea de cada lenguaje — heredoc en PHP y Perl, concatenación en VB — que son cinco formas distintas, y cuando un escape sale mal hay que buscar la línea rota dentro de una pared de texto. Con una sentencia por línea, la línea rota es la línea.
¿Por qué cada línea termina con & vbLf o un \n?
Porque ninguna de estas sentencias de salida añade un salto por su cuenta: Response.Write, echo y out.print escriben exactamente la cadena que les das. Sin el salto, todo el bloque se comprime en una línea — inofensivo para casi todas las etiquetas, pero dentro de un `<pre>` o un `<textarea>` esos saltos son el contenido, así que perderlos lo corrompe. Si la última línea de tu entrada no tiene salto, aquí tampoco se añade.
¿Por qué se escapan los signos de dólar en PHP y Perl?
Porque las cadenas entre comillas dobles interpolan en esos lenguajes: PHP expande `"$name"`, y Perl expande tanto `$name` como `@name`. Un marcado con un marcador de posición o un precio (`<b>$99</b>`, `mailto:me@example.com`) perdería un trozo de contenido, o soltaría un aviso por variable no declarada en tiempo de ejecución, y ambos fallos parecen simplemente que los datos venían vacíos. En JSP un signo de dólar no significa nada especial, así que se deja igual.
¿Qué hace la opción de escape de la etiqueta de cierre?
El código JSP y ASP vive dentro de `<% ... %>`, y PHP dentro de `<?php ... ?>`, y el analizador de la plantilla busca esos dos caracteres en el código fuente sin importarle si están dentro de una cadena. Así que una línea como `echo "<div>?>";` sale del modo PHP justo ahí, y todo lo que sigue se imprime en la página como texto: ni error ni pantalla en blanco, solo texto raro en el navegador. Con la opción activada, `%>` se escribe como `%\>` (el escape que entienden esos analizadores) y el cierre de PHP como `\x3f>`: el valor no cambia y la secuencia deja de aparecer en el código fuente.
¿Por qué el PHP generado no lleva etiqueta de cierre?
El manual de PHP recomienda omitir el `?>` de cierre en un archivo que es todo PHP: cualquier salto o espacio detrás se envía al navegador, lo que deja un espacio sobrante al principio de la respuesta, y ese espacio es una causa archiconocida de «headers already sent». El `%>` de ASP y JSP sí es obligatorio, así que se queda.
¿Se sube mi HTML?
No. La conversión ocurre por completo en la memoria del navegador; la página no hace ninguna petición y funciona sin conexión.

Herramientas relacionadas