IPv4 轉無號整數儲存,空間省 75% (15 bytes → 4 bytes),範圍查詢極快:
$ipInt = ip2long('192.168.1.1'); // 3232235777
$ipStr = long2ip($ipInt); // 192.168.1.1
// SQL 範圍查詢
SELECT * FROM logs WHERE ip_int BETWEEN ip2long('192.168.1.0') AND ip2long('192.168.1.255');
注意:PHP `ip2long` 回傳有號整數,MySQL `INET_ATON()`/`INET_NTOA()` 為無號,建議資料庫用 `INT UNSIGNED`。
function validateEmailDomain($email) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) return false;
$domain = array_pop(explode('@', $email));
return checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A');
}
MySQL 4.1+ / PHP 5+ 必須棄用 `mysql_*`,改用 `mysqli` 或 `PDO`:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ? AND status = ?");
$stmt->bind_param('si', $email, $status);
$stmt->execute();
// 防 SQL 注入、效能更好 (查詢計畫重用)
$value = $input ?? 'default'; // null 合併
$status = $user->isActive ? '啟用' : '停用'; // 三元
$page = ($_GET['page'] ?? 1) > 0 ? (int)$_GET['page'] : 1;
不要重造輪子。常用套件:
// 除錯時輸出格式化程式碼
highlight_file(__FILE__);
// 或
echo highlight_string('', true);
警告:勿暴露含密碼/金鑰的檔案!
// 入口檔案第一行
error_reporting(0);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');
避免洩露資料庫結構、路徑、SQL 查詢等敏感資訊。
$compressed = gzcompress($longText, 9); // 9 最高壓縮
// 儲存至 BLOB/TEXT 欄位
$original = gzuncompress($compressed);
// 典型文字壓縮率 70-90%
不適用需全文搜尋的欄位。
function getUserInfo($id, &$name, &$email, &$role) {
// 查詢資料庫...
$name = 'John'; $email = 'john@example.com'; $role = 'admin';
return true; // 成功指標
}
getUserInfo(123, $name, $email, $role);
// $name, $email, $role 已被修改
這 10 個技巧涵蓋資料庫優化、安全防禦、效能提升、程式碼品質,是從初階邁向資深 PHP 開發者的關鍵里程碑。持續精進、追蹤 PHP 版本更新 (目前 PHP 8.3),保持程式碼現代化。