Quiero generar HTML condicionalmente para generar una página, entonces, ¿cuál es la forma más fácil de hacer eco de fragmentos de HTML de varias líneas en PHP 4+? ¿Necesitaría usar un marco de plantilla como Smarty?
echo '<html>', "\n"; // I'm sure there's a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";
Respuestas:
Hay algunas formas de hacer eco de HTML en PHP.
1. Entre etiquetas PHP
2. En un eco
Con los ecos, si desea usar comillas dobles en su HTML, debe usar ecos de comillas simples de la siguiente manera:
O puedes escapar de ellos así:
3. Heredocs
4. Nowdocs (a partir de PHP 5.3.0)
Los motores de plantillas se utilizan para usar PHP en documentos que contienen principalmente HTML. De hecho, el propósito original de PHP era ser un lenguaje de plantillas. Es por eso que con PHP puede usar cosas como etiquetas cortas para hacer eco de variables (por ejemplo
<?=$someVariable?>
).Hay otros motores de plantillas (como Smarty, Twig, etc.) que hacen que la sintaxis sea aún más concisa (por ejemplo
{{someVariable}}
).El beneficio principal de usar un motor de plantillas es mantener el diseño ( lógica de presentación ) separado de la codificación ( lógica de negocios ). También hace que el código sea más limpio y fácil de mantener a largo plazo.
Si tiene más preguntas, no dude en dejar un comentario.
Hay más lecturas disponibles sobre estas cosas en la documentación de PHP .
NOTA: etiquetas PHP corta
<?
y?>
se desaniman porque son sólo está disponible si se ha activado lashort_open_tag
instrucción del fichero de configuración php.ini, o si PHP fue configurado con la--enable-short-tags
opción. Están disponibles, independientemente de la configuración de 5.4 en adelante .fuente
<?=$var?>
. Las etiquetas cortas se desaconsejan como de costumbre y se deben eliminar (<? doStuff() ?>
).Pruébelo así ( sintaxis heredoc ):
fuente
<?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>
--- Así que pensé que faltaban un par de paréntesis y no estaba seguro de a dónde irían exactamente. Siempre es divertido cuando se responden mis comentarios un poco más antiguos, ya que era muy nuevo en todo entonces.Puede usar la sintaxis alternativa sintaxis alternativa para estructuras de control y salir de PHP:
fuente
Básicamente puedes poner HTML en cualquier lugar fuera de las etiquetas PHP. También es muy beneficioso hacer todo el procesamiento de datos necesario antes de mostrar cualquier información, para separar la lógica y la presentación.
La visualización de datos en sí podría estar en la parte inferior del mismo archivo PHP o podría incluir un archivo PHP separado que consista principalmente de HTML.
Prefiero este estilo compacto:
Nota: es posible que deba usar en
<?php echo $var; ?>
lugar de<?=$var?>
depender de su configuración de PHP.fuente
Soy parcial a este estilo:
Sí uso etiquetas de estilo ASP, sí. La combinación de PHP y HTML se ve muy legible a mis ojos. El truco está en obtener los marcadores
<%
y%>
justo.fuente
Otro enfoque es colocar el HTML en un archivo separado y marcar el área para cambiar con un marcador de posición [[contenido]] en este caso. (También puede usar sprintf en lugar de str_replace).
Alternativamente, puede enviar todas las cosas de PHP a la pantalla capturada en un búfer, escribir el HTML y volver a colocar la salida de PHP en la página.
Puede parecer extraño escribir el PHP, atraparlo y luego volver a escribirlo, pero eso significa que puede hacer todo tipo de cosas de formateo ( heredoc , etc.) y probar que sale correctamente sin la molestia de la página plantilla que se interpone en el camino. (El CMS Joomla lo hace de esta manera, por cierto).
Es decir:
fuente
Simplemente use la función de impresión para hacer eco del texto en el archivo PHP de la siguiente manera:
fuente
fuente
Además de la respuesta de Chris B , si necesita usarlo de
echo
todos modos, aún desea mantenerlo simple y estructurado y no desea enviar el código con spam<?php stuff; ?>
, puede usar la sintaxis a continuación.Por ejemplo, desea mostrar las imágenes de una galería:
Echo toma múltiples parámetros, por lo que con una buena sangría se ve bastante bien. También usar
echo
con parámetros es más efectivo que concatenar.fuente
o
fuente
Prueba esto:
fuente
No hagas eco de HTML.
Si quieres usar
deberías estar haciendo esto:
fuente
Así es como lo hago:
fuente