Pregunta

Quiero generar HTML condicionalmente para generar una página, entonces, ¿cuál es la forma más fácil de reproducir fragmentos multilínea de HTML en PHP 4+?¿Necesitaría utilizar 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";
¿Fue útil?

Solución

Hay algunas formas de hacer eco de HTML en PHP.

1.Entre etiquetas PHP

<?php if(condition){ ?>
     <!-- HTML here -->
<?php } ?>

2.en un eco

if(condition){
     echo "HTML here";
}

Con ecos, si desea utilizar comillas dobles en su HTML, debe utilizar ecos de comillas simples como este:

echo '<input type="text">';

O puedes escapar de ellos así:

echo "<input type=\"text\">";

3.Heredocs

4.Nowdocs (a partir de PHP 5.3.0)

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 puedes usar cosas como etiquetas cortas para hacer eco de variables (p. ej. <?=$someVariable?>).

Hay otros motores de plantillas (como Smarty, Twig, etc.) que hacen que la sintaxis sea aún más concisa (p. ej. {{someVariable}}).

El principal beneficio de utilizar 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 más fácil de mantener a largo plazo.

Si tienes más preguntas no dudes en dejar un comentario.Más información está disponible sobre estas cosas en el Documentación PHP.

¡Dios los bendiga!


NOTA: Etiquetas cortas PHP <? y ?> no se recomiendan porque solo están disponibles si se habilitan con short_open_tag directiva del archivo de configuración php.ini, o si PHP se configuró con la --enable-short-tags opción. Están disponibles, independientemente de la configuración desde 5.4 en adelante..

Otros consejos

tratar de esta manera:

$variable = <<<XYZ
<html>
<body>

</body>
</html>
XYZ;
echo $variable;

Se puede usar la sintaxis sintaxis alternativa alternativa para las estructuras de control y salir de php:

<?php if ($something): ?>
    <some /> <tags /> <etc />
    <?=$shortButControversialWayOfPrintingAVariable ?>
    <?php /* A comment not visible in the HTML but is a bit of a pain to write */ ?>
<?php else: ?>
    <!-- else -->
<?php endif; ?>

Básicamente se puede poner en cualquier lugar fuera de HTML etiquetas PHP. También es muy beneficioso para hacer todo el procesamiento de datos necesario antes de indicar cualquier información, con el fin de la lógica y la presentación por separado.

La propia pantalla de datos podría estar en el fondo del mismo archivo PHP o que podría incluir un archivo PHP separada que consiste en su mayoría HTML.

Yo prefiero este estilo compacto:

<?php
    /* do your processing here */
?>

<html>
<head>
    <title><?=$title?></title>
</head>
<body>
    <?php foreach ( $something as $item ) : ?>
        <p><?=$item?></p>
    <?php endforeach; ?>
</body>
</html>

Nota: puede que tenga que utilizar <?php echo $var; ?> en lugar de <?=$var?> dependiendo de su configuración de PHP

.

Soy parcial a este estilo:

  <html>
    <head>
<%    if (X)
      {
%>      <title>Definitely X</title>
<%    }
      else
      {
%>      <title>Totally not X</title>
<%    }
%>  </head>
  </html>

hago uso de etiquetas ASP, sí. La combinación de PHP y HTML se ve super legible a mis ojos. El truco está en conseguir el <% y marcadores %> justo.

Otro enfoque se pone el código HTML en un archivo separado y marque el área a cambiar con un marcador de posición [[Contenido]] en este caso. (También se puede utilizar en lugar de la sprintf str_replace.)

$page = 'hello world';
$content = file_get_contents('html/welcome.html');
$pagecontent = str_replace('[[content]]',$content,$page);
echo($pagecontent);

Como alternativa, puede simplemente salida de todas las cosas php a la pantalla capturada en un buffer, y luego escribir el código HTML, a continuación, poner la salida php de nuevo en la página.

Puede parecer extraño para escribir el php a cabo, atraparlo, a continuación, escribir de nuevo, pero sí significa que usted puede hacer todo tipo de formato a la materia (la sintaxis heredoc etc), y probar emite correctamente sin la molestia de la página plantilla en el camino. (CMS Joomla hace de esta manera, por cierto) es decir:

<?php
ob_start();
echo('hello world');
$php_output = ob_get_contents();
ob_end_clean();
?>
<h1> My Template page says </h1>
<?php
echo($php_output );
?>
<hr>
template footer

Trate Esto puede ayudarle a .......

<?php
echo <<<HTML

your html tags here

HTML;
?>
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );

No echo fuera HTML

Si desea utilizar

<?php echo "<h1>  $title; </h1>"; ?>

que debería estar haciendo esto:

<h1><?= $title;?></h1>

Sólo tiene que utilizar Imprimir Función de hacerse eco de texto en el archivo PHP de la siguiente manera

<?php

  print('

    <div class="wrap">

      <span class="textClass">TESTING</span>

    </div>


  ')

?>
echo '
<html>
<body>
</body>
</html>
';

o

echo "<html>\n<body>\n</body>\n</html>\n";

Así es como lo hago:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top