章 10. 基本語法

從 HTML 中分離

當 PHP 解析一個檔案時,會尋找開始和結束旗標,旗標告訴 PHP 開始和停止解釋其中的代碼。此種模式的解析可以使 PHP 內嵌到各種不同的文件中,凡是在一對開始和結束旗標之外的內容都會被 PHP 解析器忽略。大多數情況下 PHP 都是內嵌在 HTML 文件中的,如下例所示。

<p>This is going to be ignored.</p>
<?php echo 'While this is going to be parsed.'?>
<p>This will also be ignored.</p>

還可以用更進階的結構:

例子 10-1. 進階分離術

<?php
if ($expression) {
    
?>
    <strong>This is true.</strong>
    <?php
} else {
    
?>
    <strong>This is false.</strong>
    <?php
}
?>
上例可標準工作,因為當 PHP 碰到結束旗標 ?> 時,就簡單地將其後的內容原樣輸出直到碰到下一個開始旗標為止。當然,上面的例子很做作,但是對輸出大塊的文字而言,脫離 PHP 解析模式通常比將所有內容用 echo() 或是 print() 輸出更有效率。

可以在 PHP 中使用四對不同的開始和結束旗標。其中兩種,<?php ?> 和 <script language="php"> </script> 總是可用的。另兩種是短旗標和 ASP 風格旗標,可以在 php.ini 配置檔中開啟或關閉。儘管有些人覺得短旗標和 ASP 風格旗標很方便,但移植性較差,通常不推薦。

注: 此外注意若果將 PHP 內嵌到 XML 或 XHTML 中則需要使用 <?php ?> 以保持符合標準。

例子 10-2. PHP 開始和結束旗標

1.  <?php echo 'if you want to serve XHTML or XML documents, do like this'?>

2.  <script language="php">
        
echo 'some editors (like FrontPage) don\'t
              like processing instructions'
;
    
</script>

3.  <? echo 'this is the simplest, an SGML processing instruction'; ?>
    <?= expression ?> This is a shortcut for "<? echo expression ?>"

4.  <% echo 'You may optionally use ASP-style tags'; %>
    <%= $variable; # This is a shortcut for "<% echo . . ." %>

上例中的 1 和 2 總是可用的,其中 1 是最常用,並建議使用的。

短旗標(上例 3)僅在通過 php.ini 配置檔中的指令 short_open_tag 開啟後才可用,或是在 PHP 編譯時加入了 --enable-short-tags 選項。

注: 若果用 PHP 3 還可以通過 short_tags() 函數啟動使用短旗標。此方法只適用於 PHP 3!

ASP 風格旗標(上例 4)僅在通過 php.ini 配置檔中的指令 asp_tags 開啟後才可用。

注: ASP 風格旗標的支援是 3.0.4 版增加的。

注: 在以下情況應避免使用短旗標:開發需要發行的程式或是庫,或是在會員不能控制的伺服器上開發。因為目的伺服器可能不支援短旗標。為了代碼的移植及發行,確保不要使用短旗標。