介紹 PHP 基本的語法和使用方式,包含如何執行 PHP、在 HTML 嵌入 PHP 與註解。

如何執行PHP

在網站目錄下建立一個文字檔副檔名存為.php,例如:hello.php,寫入:

1
2
3
<?php
echo "Hello world";
?>

假設你已經架設好環境,接著用瀏覽器輸入網頁路徑即可,其中 echo 表示輸出顯示的意思。

在HTML嵌入PHP程式

嵌入方式

使用

1
2
3
<p>這裡不會處理 exit(); </p>
<?php echo "只會處理這裡"; ?>
<p>這裡也不會處理 phpinfo(); </p>

結果:

1
2
3
4
5
這裡不會處理 exit();

只會處理這裡

這裡也不會處理 phpinfo();

exit()phpinfo()的 PHP 指令不會執行到。

使用

1
2
3
<script language="php">
echo "但編輯器上色可能會有問題";
</script>

使用

1
2
3
<?
echo "php.ini 的 short_open_tag 必須開啟";
?>

short_open_tag 功能開啟後也能這樣使用

1
<?=$text?>

使用<%…%>

1
2
3
<%
echo "php.ini 的 asp_tags 必須開啟";
%>

asp_tags 功能開啟後也能這樣使用

1
<%=$text%>

交錯的用法

PHP 直譯器甚至能解析交錯的用法…

1
2
3
<script language="php">
echo "但這是很詭異的作法!";
?>

PHP與HTML搭配使用

一般可用上述的方式來使用,一個使用控制流程的範例

1
2
3
4
5
6
7
8
9
10
11
<?php
if ($grade >= 60) {
?>
<b>恭喜!你及格了</b>
<?php
} else {
?>
<i>你不及格!</i>
<?php
}
?>

或直接用程式輸出

1
2
3
4
5
6
7
<?php
if ($grade >= 60) {
echo "<b>恭喜!你及格了</b>";
} else {
echo "<i>你不及格!</i>";
}
?>

也可以使用 heredocnowdoc 的方式,不過最好的方式是使用樣板 (Template) 的方式處理,日後有機會再介紹。

常見問題

編輯器的解析錯誤

某些情況下程式碼雖然正確,但是會造成一些網頁編輯器 (例如:Dreamweaver) 解析錯誤而造成預覽不正常,例如:

1
2
3
4
5
不安全的<?php
if ($grade >= 60) {
echo "恭喜!你及格了";
}
?>嵌入

程式執行不會有錯,但編輯器中的預覽可能會變成:

1
不安全的= 60) { echo "恭喜!你及格了"; } ?>嵌入

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

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

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

pre嵌入問題

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

1
2
3
4
<pre>
第一行 <?php // 什麼也不做 ?>
第二行
</pre>

結果:

1
第一行 第二行

但我們預期的結果應該是要

1
2
第一行
第二行

指令的結尾

就像大多數的程式語言一樣,PHP 每個指令結束使用分號 (;) 區隔,而 PHP 有兩個額外的特性:

1
2
<?php echo "單行指令可以不用分號" ?>
<?php echo "程式最後一行可以不用結尾符號";

註解

註解的用法

註解的部份不會執行,是給人看的,PHP中有三種註解方式:

  1. // 單行註解:兩個斜線後面的部份將不會處理。
  2. # 單行註解:和1.一樣功能,是shell-style的寫法。
  3. /* ... */ 多行註解:註解中間的部份將不會處理。
1
2
3
4
5
6
<?php
echo "註解一"; // 單行註解
echo "註解二"; # 單行註解
echo "註解三"; /* 多行註解
第二行 */
?>

註解的技巧

我們可以利用 //* ... //*/ 的寫法來作為區塊註解的開關

1
2
3
4
5
6
7
8
9
<?php
echo "不會影響到";
//* 區塊註解開關
if ($confition) {
echo "要註解的區塊";
}
//*/
echo "不會影響到";
?>

藉由刪除 / 加入開頭的斜線作為開啟或關閉區塊

1
2
3
4
5
6
7
8
9
<?php
echo "不會影響到";
/* 區塊註解開關
if ($confition) {
echo "要註解的區塊";
}
//*/
echo "不會影響到";
?>

常見問題

有時候程式中的字元會影響到註解,例如:

1
2
3
<?php
//echo "<?xml version=\"1.0\"?>";
?>

上面的例子雖然在此上色是對的,不過實際執行,卻會被 echo 中的 ?> 影響而當做 php 的結尾符號,而跳出 PHP 程序。而其他例子如下:

1
2
3
4
5
6
7
8
9
10
<?php
/*
echo '常犯的錯誤'; /* 註解的解析錯誤 */
*/
?>
<?php
/*
$f->setPattern('/^\d.*/);
*/
?>

延伸閱讀

下一篇 PHP 教學 - 資料型態 (Data Type) - 上