PHP教學-基本語法(Syntax)


PHP教學 - 基本語法(Syntax)
介紹PHP基本的語法和使用方式,包含如何執行PHP、在HTML嵌入PHP與註解。
1. 如何執行PHP?
在網站目錄下建立一個文字檔副檔名存為.php,例如:hello.php,寫入:
<?php
echo "Hello world";
?>
假設你已經架設好環境,接著用瀏覽器輸入網頁路徑即可,其中echo表示輸出顯示的意思。

2. 在HTML嵌入PHP程式
2.1 嵌入方式
2.1-1. 使用<?php...?>
<p>這裡不會處理 exit(); </p>
<?php echo "只會處理這裡"; ?>
<p>這裡也不會處理 phpinfo(); </p>
結果:
這裡不會處理 exit();
只會處理這裡
這裡也不會處理 phpinfo();
exit()和phpinfo()的PHP指令不會執行到。

2.1-2. 使用<script language="php">...</script>
<script language="php">
    echo "但編輯器上色可能會有問題";
</script>
2.1-3. 使用<?...?>
<?
  echo "php.ini的short_open_tag必須開啟";
?>
short_open_tag功能開啟後也能這樣使用
<?=$text?>

2.1-4. 使用<%...%>
<%
echo "php.ini的asp_tags必須開啟";
%>
asp_tags功能開啟後也能這樣使用
<%=$text%>

2.1-5 交錯的用法

PHP直譯器甚至能解析交錯的用法...
<script language="php">
    echo "但這是很詭異的作法!";
?>

2.2 PHP與HTML搭配使用
一般可用上述的方式來使用,一個使用控制流程的範例
<?php
if($grade>=60) {
?>
<b>恭喜!你及格了</b>
<?php
} else {
?>
<i>你不及格!</i>
<?php
}
?>

或直接用程式輸出

<?php
if($gra-->=60) {
    echo "<strong>恭喜!你及格了</strong>";
} else {
    echo "<em>你不及格!</em>";
}
?>
  
也可以使用heredoc或nowdoc的方式
<?php
if($grade>=60) {
    echo "<b>恭喜!你及格了</b>";
} else {
    echo "<i>你不及格!</i>";
}
?>
   
最好的方式是使用樣板(Template)的方式處理,日後有機會再介紹。

2.3 常見問題
2.3-1 編輯器的解析錯誤
某些情況下程式碼雖然正確,但是會造成一些網頁編輯器(例如:Dreamweaver)解析錯誤而造成預覽不正常,例如:
不安全的<?php
if ($grade>=60) {
    echo "恭喜!你及格了";
}
?>嵌入
    
程式執行不會有錯,但編輯器中的預覽可能會變成:
不安全的=60) { echo "恭喜!你及格了"; } ?>嵌入

這是因為編輯器可能誤將
<?php if ($grade>視為一個HTML標籤,又無此標籤而進行忽略,可在嵌入的前後加上/*><!--*/和/*--><?*/來避免

不安全的<?php
/*><!--*/
if ($grade>=60) {
    echo "恭喜!你及格了";
}
/*--><?*/
?>嵌入

利用當中的<!--和-->讓編輯器將此段視為HTML的註解而不顯示。

2.3-2 Pre嵌入問題

在HTML標籤<Pre>中嵌入PHP語法有可能會造成不正確的斷行,例如:

<pre>
第一行  <?php //什麼也不做 ?>
第二行
</pre>
結果:
第一行 第二行
但我們預期的結果應該是要
第一行
第二行

3. 指令的結尾
就像大多數的程式語言一樣,PHP每個指令結束使用分號(;)區隔,而PHP有兩個額外的特性:
  
<?php echo "單行指令可以不用分號" ?>
<?php echo "程式最後一行可以不用結尾符號"; 

Note:
文件末尾的 PHP 程式碼段結束標記可以不要,有些情況下當使用 include 或者 require 時省略掉會更好些,這樣不期望的空白符就不會出現在文件末尾,之後仍然可以輸出響應標頭。在使用輸出緩衝時也很便利,就不會看到由包含文件產生的不期望的空白符。
4. 註解
4.1 註解的用法
註解的部份不會執行,是給人看的,PHP中有三種註解方式:
    // 單行註解:兩個斜線後面的部份將不會處理。
    # 單行註解:和1.一樣功能,是shell-style的寫法。
    /* ... */ 多行註解:註解中間的部份將不會處理。
<?php
    echo "註解一"; //單行註解
    echo "註解二"; #單行註解
    echo "註解三"; /*多行註解
    第二行*/
?>

4.2 註解的技巧
我們可以利用//* ... //*/的寫法來作為區塊註解的開關
<?php
echo "不會影響到";
//*區塊註解開關
if ($confition) {
  echo "要註解的區塊";
}
//*/
echo "不會影響到";
?>

藉由刪除/加入開頭的斜線作為開啟或關閉區塊
<?php
echo "不會影響到";
/*區塊註解開關
if ($confition) {
  echo "要註解的區塊";
}
//*/
echo "不會影響到";
?>
    
4.3 常見問題
有時候程式中的字元會影響到註解,例如:
  
<?php
 //echo "<?xml version=\"1.0\"?>";
?>
上面的例子雖然在此上色是對的,不過實際執行,卻會被echo中的?>影響而當做php的結尾符號,而跳出PHP程序。而其他例子如下:
<?php
 /*
    echo '常犯的錯誤'; /* 註解的解析錯誤 */
 */
?>
<?php
/*
 $f->setPattern('/^\d.*/);
*/
?>
  

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

PHP 與 JavaScript 之間傳值利用 json