Saya ingin menghasilkan HTML secara bersyarat untuk menghasilkan halaman, jadi apa cara termudah untuk menampilkan cuplikan multiline HTML di PHP 4+? Apakah saya perlu menggunakan kerangka kerangka 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";
Jawaban:
Ada beberapa cara untuk meng-echo HTML di PHP.
1. Di antara tag PHP
2. Dalam gema
Dengan echos, jika Anda ingin menggunakan tanda kutip ganda di HTML Anda, Anda harus menggunakan echos kutipan tunggal seperti ini:
Atau Anda bisa menghindarinya seperti ini:
3. Heredocs
4. Nowdocs (mulai dari PHP 5.3.0)
Mesin template digunakan untuk menggunakan PHP dalam dokumen yang sebagian besar berisi HTML. Sebenarnya, tujuan asli PHP adalah menjadi bahasa templating. Itulah mengapa dengan PHP Anda dapat menggunakan hal-hal seperti tag pendek untuk menggemakan variabel (misalnya
<?=$someVariable?>
).Ada mesin templat lain (seperti Smarty, Twig, dll.) Yang membuat sintaks menjadi lebih ringkas (mis
{{someVariable}}
.).Manfaat utama menggunakan mesin templat adalah menjaga desain ( logika presentasi ) terpisah dari pengkodean ( logika bisnis ). Ini juga membuat kode lebih bersih dan lebih mudah dipelihara dalam jangka panjang.
Jika Anda memiliki pertanyaan lebih lanjut, silakan tinggalkan komentar.
Bacaan lebih lanjut tentang hal-hal ini tersedia dalam dokumentasi PHP .
CATATAN: Tag pendek PHP
<?
dan?>
tidak disarankan karena hanya tersedia jika diaktifkan denganshort_open_tag
arahan file konfigurasi php.ini, atau jika PHP dikonfigurasi dengan--enable-short-tags
opsi. Mereka tersedia, terlepas dari pengaturan dari 5.4 dan seterusnya .sumber
<?=$var?>
. Tag pendek tidak disarankan seperti biasa, dan harus dihapus (<? doStuff() ?>
).Cobalah seperti ini ( sintaks heredoc ):
sumber
<?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>
--- Jadi saya pikir banyak tanda kurung hilang dan tidak yakin ke mana tepatnya mereka akan pergi. Itu selalu lucu ketika komentar saya yang sedikit lebih tua dijawab, karena saya sangat baru dalam semua itu.Anda dapat menggunakan sintaks alternatif sintaks alternatif untuk struktur kontrol dan keluar dari PHP:
sumber
Pada dasarnya Anda dapat meletakkan HTML di mana saja di luar tag PHP. Ini juga sangat bermanfaat untuk melakukan semua pemrosesan data yang diperlukan sebelum menampilkan data apa pun, untuk memisahkan logika dan presentasi.
Tampilan datanya sendiri dapat berada di bagian bawah file PHP yang sama atau Anda dapat menyertakan file PHP terpisah yang sebagian besar terdiri dari HTML.
Saya lebih suka gaya ringkas ini:
Catatan: Anda mungkin perlu menggunakan
<?php echo $var; ?>
alih-alih<?=$var?>
bergantung pada penyiapan PHP Anda.sumber
Saya menyukai gaya ini:
Saya menggunakan tag gaya ASP, ya. Perpaduan PHP dan HTML terlihat sangat mudah dibaca oleh mata saya. Triknya adalah mendapatkan penanda
<%
dan dengan%>
benar.sumber
Pendekatan lain adalah meletakkan HTML dalam file terpisah dan menandai area yang akan diubah dengan placeholder [[konten]] dalam kasus ini. (Anda juga dapat menggunakan sprintf sebagai ganti str_replace.)
Sebagai alternatif, Anda bisa mengeluarkan semua barang PHP ke layar yang ditangkap dalam buffer, menulis HTML, dan mengembalikan keluaran PHP ke halaman.
Mungkin tampak aneh untuk menulis PHP, menangkapnya, dan kemudian menulisnya lagi, tetapi itu berarti Anda dapat melakukan semua jenis hal pemformatan ( heredoc , dll.), Dan mengujinya dengan benar tanpa kerumitan halaman template menghalangi. ( CMS Joomla melakukannya dengan cara ini, BTW.)
Yaitu:
sumber
Cukup gunakan fungsi print untuk menggemakan teks di file PHP sebagai berikut:
sumber
sumber
Selain jawaban Chris B , jika Anda
echo
tetap ingin menggunakannya , tetap ingin membuatnya tetap sederhana dan terstruktur dan tidak ingin kode spam dengan<?php stuff; ?>
's, Anda dapat menggunakan sintaks di bawah ini.Misalnya Anda ingin menampilkan gambar sebuah galeri:
Echo mengambil banyak parameter sehingga dengan indentasi yang bagus akan terlihat cukup bagus. Juga menggunakan
echo
parameter dengan lebih efektif daripada penggabungan.sumber
atau
sumber
Coba ini:
sumber
Jangan menggemakan HTML.
Jika Anda ingin menggunakan
Anda harus melakukan ini:
sumber
Inilah cara saya melakukannya:
sumber