Saya ingin kondisional HTML output untuk menghasilkan halaman, jadi apa's cara termudah untuk echo multiline potongan HTML dalam PHP 4+? Apakah saya perlu menggunakan kerangka template seperti 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";
Ada beberapa cara untuk echo HTML dalam PHP.
<?php if(condition){ ?>
<!-- HTML here -->
<?php } ?>
if(condition){
echo "HTML here";
}
Dengan echos, jika anda ingin menggunakan tanda kutip ganda di HTML anda, anda harus menggunakan kutip tunggal echos seperti:
echo '<input type="text">';
Atau anda dapat melarikan diri dari mereka seperti:
echo "<input type=\"text\">";
Template engine digunakan untuk menggunakan PHP dalam dokumen yang sebagian besar berisi HTML. Bahkan, PHP's tujuan awal adalah untuk menjadi templating language. Yang's mengapa dengan PHP anda dapat menggunakan hal-hal seperti pendek kategori ke echo variabel (misalnya <?=$someVariable?>
).
Ada yang lain template engine (seperti Smarty, Ranting, dll.) yang membuat sintaks yang lebih singkat (misalnya {{someVariable}}
).
Manfaat utama dari menggunakan template engine adalah menjaga desain (Presentasi Logika) terpisah dari coding (Business Logic). Hal ini juga membuat kode lebih bersih dan lebih mudah untuk mempertahankan dalam jangka panjang.
Jika anda memiliki pertanyaan lebih lanjut jangan ragu untuk meninggalkan komentar. Bacaan lebih lanjut tersedia pada hal-hal ini dalam PHP Dokumentasi.
Tuhan Memberkati!
CATATAN: PHP pendek kategori <?
dan ?>
berkecil hati karena mereka hanya tersedia jika diaktifkan dengan short_open_tag
php.ini file konfigurasi direktif, atau jika PHP dikonfigurasi dengan --enable-short-tags
pilihan. Mereka tersedia, terlepas dari pengaturan dari 5,4 seterusnya.
Anda bisa menggunakan alternatif sintaks sintaks alternatif untuk struktur kontrol dan keluar dari 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; ?>
Pada dasarnya anda dapat menempatkan HTML di mana saja di luar dari tag PHP. It's juga sangat bermanfaat untuk melakukan semua yang diperlukan pengolahan data sebelum menampilkan data apapun, dalam rangka untuk memisahkan logika dan presentasi.
Data display itu sendiri bisa di bawah sama file PHP atau anda bisa menyertakan memisahkan file PHP yang terdiri dari sebagian besar HTML.
Saya lebih suka gaya kompak ini:
<?php
/* do your processing here */
?>
<html>
<head>
<title><?=$title?></title>
</head>
<body>
<?php foreach ( $something as $item ) : ?>
<p><?=$item?></p>
<?php endforeach; ?>
</body>
</html>
Catatan: anda mungkin perlu untuk menggunakan <?php echo $var; ?>
bukan <?=$var?>
tergantung pada PHP anda setup.
Aku parsial untuk gaya ini:
<html>
<head>
<% if (X)
{
%> <title>Definitely X</title>
<% }
else
{
%> <title>Totally not X</title>
<% }
%> </head>
</html>
Saya menggunakan ASP-tag gaya, ya. Pencampuran PHP dan HTML terlihat super-mudah dibaca untuk mata saya. Trik dalam mendapatkan <%
and %>
spidol tepat.
Pendekatan lain adalah menempatkan kode HTML dalam file terpisah dan menandai area yang berubah dengan pengganti [[konten]] dalam kasus ini. (Anda juga dapat menggunakan sprintf bukan str_replace.)
$page = 'hello world';
$content = file_get_contents('html/welcome.html');
$pagecontent = str_replace('[[content]]',$content,$page);
echo($pagecontent);
Atau anda hanya bisa output semua barang php untuk layar ditangkap dalam buffer, kemudian menulis html, kemudian masukan php output kembali ke halaman.
Ini mungkin tampak aneh untuk menulis php out, menangkapnya, kemudian menulis lagi, tapi itu tidak berarti bahwa anda dapat melakukan semua jenis format barang (Heredocs dll),& menguji output dengan benar tanpa kerumitan dari halaman template mendapatkan di jalan. (Joomla CMS melakukannya dengan cara ini, BTW) yaitu:
<?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
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';
echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );
Selain untuk Chris B's menjawab, jika anda perlu untuk menggunakan echo
pula, masih ingin tetap sederhana dan terstruktur dan don't ingin spam kode dengan <?php barang; ?>
's, anda dapat menggunakan sintaks di bawah ini.
Misalnya anda ingin menampilkan gambar dari gallery:
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 mengambil beberapa parameter sehingga dengan indentasi itu terlihat cukup baik. Juga menggunakan echo
dengan parameter lebih efektif daripada concatenating.
Ini adalah bagaimana saya melakukannya:
<?php if($contition == true){ ?>
<input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
<p>No input here </p>
<?php } ?>