Pergunta

Eu quero condicionalmente saída HTML para gerar uma página, então qual é a maneira mais fácil de fazer eco trechos de várias linhas de HTML em PHP 4+? Será que eu preciso para usar uma estrutura de modelo 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";
Foi útil?

Solução

Existem algumas maneiras de echo HTML em PHP.

1. Entre PHP tag

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

2. Em um eco

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

Com ecos, se você quiser usar aspas duplas em seu HTML que você deve usar ecos aspas simples assim:

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

Ou você pode escapar-lhes assim:

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

3. Heredocs

4. Nowdocs (a partir do PHP 5.3.0)

motores do modelo são usados ??para usando PHP em documentos que contêm principalmente HTML. Na verdade, o propósito original de PHP era para ser uma linguagem de templates. É por isso que com PHP você pode usar coisas como tags curtas ecoar variáveis ??(por exemplo <?=$someVariable?>).

Existem outros motores de modelo (como Smarty, Galho, etc.) que fazem a sintaxe ainda mais concisa (por exemplo {{someVariable}}).

O principal benefício de usar um modelo de motor é manter o projeto (Apresentação Logic) separar-se da codificação (Business Logic). Ele também torna o código mais limpo e mais fácil de manter a longo prazo.

Se você tiver mais alguma dúvida não hesite em deixar um comentário. Outras leituras é acessível em coisas no PHP Documentation .

God Bless!


NOTA: PHP tags curtas <? e ?> são desencorajados porque eles só estão disponíveis se habilitado com a directiva arquivo de configuração php.ini short_open_tag, ou se o PHP foi configurado com a opção --enable-short-tags. Eles estão disponíveis, independentemente das configurações de 5,4 em diante .

Outras dicas

Tente assim:

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

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

Você pode usar a sintaxe sintaxe alternativa alternativa para estruturas de controle e sair 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; ?>

Basicamente, você pode colocar HTML em qualquer lugar fora de tags PHP. Também é muito benéfico para fazer todos os seus dados necessários processamento antes de exibir quaisquer dados, a fim de lógica e apresentação separada.

Os dados exibir si poderia ser na parte inferior do mesmo arquivo PHP ou você poderia incluir um arquivo PHP separado que consiste principalmente de HTML.

Eu prefiro 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:. Pode ser necessário o uso <?php echo $var; ?> vez de <?=$var?> dependendo da configuração do PHP

Eu sou parcial a este estilo:

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

Eu não usar tags no estilo ASP, sim. A mistura de PHP e HTML parece super-readable aos meus olhos. O truque está em conseguir os marcadores <% e %> apenas para a direita.

Outra abordagem é colocar o HTML em um arquivo separado e marcar a área a mudança com um espaço reservado [[conteúdo]] neste caso. (Você também pode usar sprintf em vez do str_replace.)

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

Como alternativa, você pode apenas output todas as coisas php para a tela capturada em um buffer, em seguida, escrever o html, em seguida, colocar a parte de trás saída php na página.

Pode parecer estranho para escrever o php para fora, pegá-lo, em seguida, escrevê-lo novamente, mas isso não significa que você pode fazer todos os tipos de formatação de material (Heredocs etc), e teste ele exibe corretamente sem o incômodo da página template ficando no caminho. (CMS Joomla faz isto deste modo, BTW) ou seja:

<?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

Tente Isso pode ajudar você .......

<?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 ) );

não eco fora HTML

Se você quiser usar

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

você deve fazer o seguinte:

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

Basta usar print função para echo texto em arquivo PHP como segue

<?php

  print('

    <div class="wrap">

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

    </div>


  ')

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

ou

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

Isto é como eu faço isso:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top