Category: PHP

PHP 單引號及雙引號的分別

在 PHP 印出字串, 或者將字串放入函式內, 可以透過單引號或雙引號, 兩者看似差不多, 但分別還是有的。 單引號及雙引號在 PHP 裡面最大的分別是, 用單引號時只會印出字串, 但不會印出裡面的變數內容, 以及不會對類似 \t, \r, \n 等特別字串做處理, 例如: 上面會印出 I like $str, 而不會印出 $str 的值, 另一個例子是: 上面的例子不會對新換行符號 \n 做處理, …

PHP 檢查及轉換字串編碼

mb_detect_encoding() 是用作檢查字串編碼的 PHP 函式, 使用上很方便, 例如: 以上程式碼會印出 $str 的編碼, 例如 UTF-8。 iconv() 則是用作轉換字串編碼的函式, 例如我想將 BIG5 編碼轉到 UTF-8, 是這樣寫: 將上面的 mb_detect_encoding() 及 iconv() 配合使用, 可以先得出字串編碼, 然後做轉換:

PHP 內建的 Web Server

PHP 從 5.4 開始內建簡單的 Web Server, 主要用作開發環境測試用途。比起以往要安裝 Apache 及 PHP 簡單方便得多, 但不知道跟用 Apache + PHP 的環境差異有多大。 啟動 PHP Web Server 指令: php -S localhost:80 -t 執行後便會出現以下信息: PHP 5.4.0 Development …

PHP: 改變 file_get_contents() User-Agent

PHP 的內建函式 file_get_contents() 除了可以讀取本地檔案外, 也可以擷取遠端網頁, 但有些時候會還到 403 Forbidden 情況, 原因是網站伺服器會讀取 user-agent, 判斷是否瀏覽器正常訪問。 一般上網站會用 user-agent 判斷訪客的瀏覽器或 OS, 例如手機訪客所看到的網頁跟 desktop 有所不同。而封鎖像 PHP 的 file_get_contents() 之類的非正常瀏覽 user-agent, 可以減少伺服器的負荷及外部的 DDOS 攻擊。 要解決這個問題, 可以在 …

Linux 查看及轉換檔案編碼

Linux 下要查看檔案的編碼有多種方法, 以下會用 file 指令查看檔案的編碼。例如查看 php.ini 檔案的編碼: $ file -i php.ini php.ini: text/plain; charset=us-ascii 上面可以看到 php.ini 檔案是純文字檔, 編碼是 us-ascii, 如果不想輸出檔案名稱, 只要得出檔案類型及結果, 可以加入 -b 參數: $ file -bi php.ini text/plain; …

PHP 監測伺服器

在網上的伺服器監測程式有很多, 功能都十分完善, 但如果你像我一樣只要監測伺服器是否 down 機, 而且全都是 httpd 伺服器, 可以透過 PHP 簡單實現, 例如這樣就可以很簡單地看到伺服器是否可以連接: 當然上面的程式很陽春, 只會印出伺服器是否可以連接, 而且只可以人手打開上面 PHP 網頁才可以監測。其實只要透過 crontab 自動執行 PHP, 就可以讓 PHP 自動監測伺服器, 並在發生問題時以電郵通知管理員。另外也可以在要監測的伺服器上放一個細小的 PHP 程式, 會印出系統的 load average, …

PHP 讀取 CSV 檔案

在 PHP 要讀取 CSV 檔案可以使用內建的 fgetcsv() 函式, fgetcsv() 可以讀取 CSV 檔案並逐行放到 array 裡面, 假設以下為 CSV 檔內容: “User1″,”user1@domain.com” “User2″,”user2@domain.com” “Hello123″,”hello123@domain.com” 如果 CSV 檔案每行多一個欄位, 做法也差不多, 例如 CSV 檔內容: “User1″,”user1@domain.com”,”HK” “User2″,”user2@domain.com”,”HK” “Hello123″,”hello123@domain.com”,”USA” …

PHP 發送 HTML 電郵

用 PHP 發送純文字 Email 很簡單, 但如果要發送一封 HTML 格式的 Email, 只需要在 mail() 裡面加入 MIME 版本及 Content-type header 就可以完成, 要注意的是如果發送的是中文電郵, 需要指定使用的 charset, 以下是發送 HTML Email 簡單的例子: 以上用的方法是直接使用 mail() 函式, 再定義 MIME …

PHP 透過 PHPMailer 發送帶附件電郵

PHPMailer 是大個功能強大的 PHP 電郵 class, 而且使用十分簡單, 原本要多行程式碼才可以完成關於電郵的工作, 用 PHPMailer 只要幾行就完成, 以下是用 PHPMailer 發送帶附件電郵的方法: 1. 到 http://github.com/PHPMailer/PHPMailer 下載 PHPMailer. 2. 將 PHPMailer 放到伺服器後, 在程式載入 PHPMailer 就可以使用, 以下是使用例子: 以上程式碼會發送電郵到 to@emailaddress, 並加入 …

PDO 連接 MySQL

PHP 連接 MySQL 可以很簡單直接地 mysql_connect() 或 mysqli_connect(), 那麼為什麼是要 PDO? PDO 是功能更為強大的資料庫 API, 即使將來要轉換資料庫系統, 只需更改連接的參數, 不需每個出現 mysql_* 函式的程式碼都修改, 以往要做到這樣, 通常是寫一個簡單的連接 MySQL class, 或者直接用 ADOdb 之類來做。 另一個優點是 PDO 會自動將用戶的輸入清理乾淨, 即防止 SQL …