Come posso eco HTML in PHP?
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";
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 ) );
In aggiunta alla risposta di Chris B, se è necessario utilizzare echo
in ogni caso, ancora voglia di mantenere le cose semplici e strutturato e non si vuole spammare il codice con <?php stuff; ?>
di, è possibile utilizzare la seguente sintassi.
Ad esempio si desidera visualizzare le immagini di una galleria:
foreach($images as $image)
{
echo
'<li>',
'<a href="', site_url(), 'images/', $image['name'], '">',
'<img ',
'class="image" ',
'title="', $image['title'], '" ',
'src="', site_url(), 'images/thumbs/', $image['filename'], '" ',
'alt="', $image['description'], '"',
'>',
'</a>',
'</li>';
}
Echo prende più parametri così con buona rientri sembra piuttosto buona. Anche usando echo
con i parametri è più efficace di concatenazione.
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 } ?>