Skip to content

Todo para WordPress, el desarrollo web — y mucho más

HTML a PHP: echo, heredoc, nowdoc y salida de PHP

HTML a PHP: echo, heredoc, nowdoc y salida de PHP

Pegue marcado ya listo y obtendrá cinco formas de meterlo en un archivo PHP, cada una con el escapado correcto. Todo se ejecuta en su navegador: el marcado no se envía a ninguna parte ni se guarda en ningún sitio.

Arrastre aquí un .html: el archivo se lee localmente.
Tratamiento del marcado

Lo más parecido a lo que produce codebeautify, pero con escapado: sin él, cualquier apóstrofo del marcado rompe la cadena PHP.

Pegue HTML arriba: el código PHP aparecerá aquí.

El marcado no sale de su navegador: la conversión se ejecuta localmente, sin enviar nada a un servidor.

Cinco formas y cuándo conviene cada una

echo línea a línea: una línea tras otra, cada una en su propia llamada. El aspecto más habitual, cómodo cuando entre las líneas hay que meter una condición o un bucle. nowdoc: un bloque en el que PHP no interpreta nada, ni secuencias de escape ni variables. El marcado entra en el código byte a byte y no necesita escapado alguno. Es la forma más segura de trasladar HTML ajeno. heredoc: el mismo bloque, pero con variables: $title dentro se sustituirá. Por eso se escapan el signo de dólar y la barra invertida, y las comillas no. Cadena en una variable: el marcado se recoge en $html mediante concatenación. Hace falta cuando hay que devolverlo desde una función o pasarlo a un motor de plantillas en vez de imprimirlo de inmediato. Salida de PHP: cerrar la etiqueta y entregar el marcado tal cual. Es justo lo que recomienda la documentación de PHP: ningún escapado, ningún coste por pegar cadenas, y el resaltado de sintaxis del editor sigue funcionando. La etiqueta de cierre ?> falta a propósito en el código generado. Cualquier carácter posterior —incluso un salto de línea accidental al final del archivo— llega a la salida y produce el clásico «headers already sent».

Por qué los conversores sin escapado producen código que no funciona

El conversor de HTML a PHP más extendido hace exactamente una cosa: corta el texto en líneas y pega echo '<línea>';. Allí no hay sustitución de caracteres alguna, y se nota en el primer trozo real de marcado. Un atributo entre comillas simples —<a href='/price'>— cierra la cadena PHP en mitad del texto. A continuación viene un error de sintaxis. Una barra invertida al final de la línea se come la comilla de cierre y pega dos líneas en una. Un signo de dólar entre comillas dobles o en un heredoc convierte $total en un valor vacío. trim() en cada línea recorta en silencio la sangría dentro de pre, textarea y code: en la página cambia lo que ve el visitante. Todas las líneas se pegan sin saltos, así que el HTML resultante se convierte en una sola línea interminable. Aquí cada uno de estos casos está resuelto, y la etiqueta del heredoc se elige para que no coincida con ninguna línea de su marcado: de lo contrario el bloque se cerraría por la mitad.

Preguntas frecuentes