公告版位

介紹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 "恭喜!你及格了";
} else {
	echo "你不及格!";
}
?>

也可以使用heredocnowdoc的方式

<?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 "程式最後一行可以不用結尾符號"; 

不過養成良好的寫作習慣,不建議這樣使用。

4. 註解

4.1 註解的用法

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

  1. // 單行註解:兩個斜線後面的部份將不會處理。
  2. # 單行註解:和1.一樣功能,是shell-style的寫法。
  3. /* ... */ 多行註解:註解中間的部份將不會處理。
<?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.*/);
*/
?>

延伸閱讀

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

文章標籤
創作者介紹

小殘的程式光廊

emn178 發表在 痞客邦 PIXNET 留言(8) 人氣()


留言列表 (8)

發表留言
  • derekypp peng
  • 感謝分享~~~~~~


  • 不客氣

    emn178 於 2013/02/25 19:06 回覆

  • 訪客
  • 謝謝你分享出來~好詳細
    我想請問一下
    下面的是我的程式碼
    <?php
    if($id == '1'){ echo "AAA";}
    ?>

    可是卻沒有出來
    我看Chrome 瀏覽器的執行碼
    他的執行程式碼卻是↓

    <!--?php
    if($id =='1'){ echo "AAA";}
    ?-->

    " <?php " 、 " ?> "
    php 自動被註解

    (我換一台電腦嘗試我的語法,可以正常顯示。
    但另外一台卻不行顯示)

    所以我加入上面有提到的
    /*><!--*/和/*--><?*/
    還是一樣沒有用?
    不知道我是不是哪裡弄錯了
    不好意思 求你救救我!!!~~
  • 你的開發環境是什麼?用什麼IDE?

    emn178 於 2013/05/24 21:49 回覆

  • 訪客
  • 我是用 Dreamweaver 的
    不好意思 剛開始學 php 所以還有很多不懂的地方
    麻煩您了!!!!!
  • 應該是Dreamweaver把它轉成註解, 你用記事本之類純文字編輯器的寫完存檔試試看
    確認一下Dreamweaver中的編輯的文件類型是php

    題外話, 很少看過高手在用Dreamweaver寫php的...

    emn178 於 2013/05/26 13:18 回覆

  • 訪客
  • 您好
    我的文件類型是php
    我用記事本重新編輯內容
    可是執行出來還是一樣被註解
    =================================
    我看人家都推薦 Dreamweaver 寫網頁,所以我也用這試試看。
    那不知道版主有沒有推薦的編輯軟體?
    不好意思 再麻煩您了

  • 看起來是apache沒有正確載入php模組,重新安裝相關套件(wamp, lamp等)應該可以

    我個人是用有上色的純文字編輯器就可以了, 蠻多人使用notepad++, 不過只有window版本, 我現在是用sublime text 2, 這兩個都可以裝一些額外的外掛輔助開發

    emn178 於 2013/05/27 19:37 回覆

  • 訪客
  • 不知道是不是因為電腦的關係
    因為我用另外一台電腦試 php 檔案,他可以按照我的內容正常顯示
    但我自己這台就不行了
  • 訪客
  • 終於成功啦~~~~~~~
    謝謝您的大力幫助!!!! 給你大大的讚!!!!!
    notepad++ ,爬文了一下。這個好像還不錯用
    對初學者的我真的收穫良多阿~
    真的太謝謝您了


  • 恭喜~

    emn178 於 2013/05/31 20:05 回覆

  • 騏濬 張
  • 您好
    我是在GOOGLE搜尋到您的部落格的
    我想請問一下 PHP 的問題
    不知道您會不會
    http://www01.eyny.com/thread-9354625-1-24O04RLH.html
    (這是我昨天在伊莉論壇發表的) 不知道對於這個您會不會
  • 看不懂你的問題是啥

    emn178 於 2014/01/22 20:11 回覆

  • 騏濬 張
  • (回上一個留言)
    http://a425.file-static.com/data/attachment/forum/201401/21/144433szp4kzbgmi8dlksa.png
    就像這張圖一樣
    如何自動產生繳費編號?
  • 之前有用過別家的金流, 虛擬帳號是必須依據金流供應商的規則自行產生, 包含固定的企業識別碼(申請服務時給你的代碼)和自行產生的部分, 由於避免產生重復的虛擬帳號, 必須在資料庫記錄, 所以可能要看一下你的金流供應商的說明, 看產生規則是如何

    emn178 於 2014/01/26 09:05 回覆

找更多相關文章與討論