2010-11-25 21 views
8

我正在學習一本書中的PHP(無編程經驗)。本書中的示例使用了一種奇怪的方式來有條件地輸出大塊HTML。它關閉條件內的PHP標籤,並在輸出HTML後重新打開它。我明白(經過一些頭腦的搔癢)它是如何工作的,但它看起來像一個狡猾的,並不打算被使用的,這種解決方法。在PHP中輸出大塊HTML的正確方法

<?php 
    if(something == somethingelse) { 
     echo "some message"; 
    } 
    else { 
?> 
<big-block-of-html> 
</big-block-of-html> 
<?php } 
?> 

本書做介紹定界符,但從未使用過它。有沒有這樣做的正確方法?從PHP內部輸出HTML似乎更直觀。

+2

是啊,是有效的。有很多類似的問題,像這樣http://stackoverflow.com/questions/2788891/strange-php-syntax和這個http://stackoverflow.com/questions/2333779/whats-this-kind-of-syntax- in-php和... http://stackoverflow.com/search?q = php + syntax – ajreal 2010-11-25 12:08:13

+2

值得注意的是,有很多方法可以打印HTML(一個有趣的問題本身),但是從一個條件是一個衆所周知的廣泛的語法特徵,而不是解決方法。 – 2010-11-25 12:11:26

+2

順便說一句,如果你反過來思考這個問題,可能會更容易理解:PHP起源於,主要是將腳本語言嵌入到HTML中的一種方式*只有在您的情況下,PHP代碼比HTML更多,所以餘額被扭轉。 – deceze 2010-11-25 14:45:09

回答

11

這正是PHP應該如何使用,並且更可讀,優雅和強大比所有替代*。我剛剛去了一個更好的縮進風格:

<?php 
    // normal 
    // code 
    // here 
?> 
<?php if ($foo) : ?> 

    <div> 
     <!-- more HTML --> 
    </div> 

<?php endif; ?> 

*除非你去喜歡,當然Smarty的完全免費的代碼模板...

0

PHP允許多種方式執行此操作;選擇一個主要是一個偏好問題 - 對於某些人來說,這是最易讀的選項,對某些人來說這是一個可怕的黑客攻擊。所有內聯HTML都很難以任何形式維護 - 如果您在認真考慮您的網站,請考慮某種模板系統(如Smarty)和/或框架(例如Symfony),否則您因爲試圖維護PHP + HTML湯而瘋了。

+0

謝謝。目前我處於一個相對早期的學習階段。我打算學習一個框架,但我想先了解基礎知識。 – ntc 2010-11-25 12:10:39

1

想想把這個塊隱藏在其他文件中。 然後,您可以創建這樣一些功能:

function get_some_big_block_content() 
{ 
    return get_file_contents('./your_big_block.html'); 
} 

然後,您可以:

<?php 
    if(something == somethingelse) { 
     echo "some message"; 
    } 
    else { 
     echo get_some_big_block_content(); 
    } 

?> 
-1

使用

<?php 
    if (something == somethingelse) { 
     echo "some message"; 
    } 
    else { 
     echo "<big-block-of-html> 
     </big-block-of-html>"; 
    } 
?>