Domanda

Voglio condizionalmente output HTML per generare una pagina, quindi qual è il modo più semplice per eco frammenti più righe di codice HTML in PHP 4+? Avrei bisogno di utilizzare un quadro modello di come 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";
È stato utile?

Soluzione

Ci sono alcuni modi per eco HTML in PHP.

1. Tra i tag PHP

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

2. In un eco

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

Con echi, se si desidera utilizzare le virgolette nel codice HTML è necessario utilizzare echi singoli citazione in questo modo:

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

In alternativa si possono sfuggire in questo modo:

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

3. Heredocs

4. Nowdocs (a partire da PHP 5.3.0)

motori di modello sono utilizzati per l'utilizzo di PHP nei documenti che contengono principalmente HTML. In realtà, il proposito originale di PHP è stato quello di essere un linguaggio di templating. Ecco perché con PHP è possibile utilizzare le cose come tag brevi a risuonare variabili (ad esempio <?=$someVariable?>).

Ci sono altri motori di template (come Smarty, Ramoscello, etc.) che rendono la sintassi ancora più conciso (ad esempio {{someVariable}}).

Il principale vantaggio di utilizzare un template engine è mantenere il disegno (Presentazione Logic) separato dalla codifica (Business Logic). Inoltre rende il codice più pulito e più facile da mantenere nel lungo periodo.

Se avete altre domande non esitate a lasciare un commento. Ulteriori approfondimenti sono disponibili su queste cose nel Documentazione PHP .

God Bless!


Nota: PHP tag brevi <? e ?> sono scoraggiati perché sono disponibili solo se abilitato con short_open_tag php.ini direttiva del file di configurazione, o se PHP è stato configurato con l'opzione --enable-short-tags. Sono disponibili, indipendentemente dalle impostazioni da 5,4 in poi .

Altri suggerimenti

provare in questo modo:

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

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

È possibile utilizzare la sintassi alternativa alternativa sintassi per le strutture di controllo e uscire 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; ?>

In sostanza si può mettere HTML ovunque al di fuori dei tag PHP. E 'anche molto utile per fare tutto il vostro trattamento dei dati necessari prima di visualizzare tutti i dati, al fine di logica e presentazione separata.

La visualizzazione dei dati in sé potrebbe essere in fondo lo stesso file PHP o si potrebbe includere un file PHP indipendente composto per lo più di HTML.

Io preferisco questo stile compatto:

<?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: potrebbe essere necessario utilizzare <?php echo $var; ?> invece di <?=$var?> a seconda della configurazione di PHP

.

Ho un debole per questo stile:

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

Lo faccio utilizzare i tag in stile ASP, sì. La mescolanza di PHP e HTML sembra super-leggibile agli occhi. Il trucco sta nel ricevendo il <% e marcatori %> giusto.

Un altro approccio è messo il codice HTML in un file separato e segnare la zona a cambiare con un segnaposto [[content]] in questo caso. (È inoltre possibile utilizzare sprintf al posto del str_replace.)

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

In alternativa si può semplicemente uscita tutta la roba php alla schermata catturata in un buffer, quindi scrivere il codice HTML, poi mettere l'uscita php indietro nella pagina.

Può sembrare strano a scrivere il php fuori, prenderlo, poi scrivere di nuovo, ma significa che si può fare tutti i tipi di formattazione roba (Heredocs, ecc), e testarlo in uscita correttamente senza il fastidio della pagina modello di intralcio. (CMS Joomla lo fa in questo modo, BTW) vale a dire:

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

Prova questo può aiutare .......

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

non eco fuori HTML

se si desidera utilizzare

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

si dovrebbe fare questo:

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

È sufficiente utilizzare Stampa la funzione eco testo in file PHP come segue

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

Questo è come lo faccio:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top