首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 常用函數速查手冊:字串、陣列、檔案、時間、JSON、Include/Require 核心用法總整理

     編輯:PHP 相關知識

前言:高效開發離不開熟練的 API 掌握

PHP 擁有龐大的內建函數庫,熟悉高頻函數的參數、回傳值、邊界情況能大幅減少查閱文件時間。本文整理實務最常用的字串操作、陣列操作、檔案 I/O、日期時間、JSON 編解碼、檔案引入六大類,附官方原型、參數說明與實戰提醒。

官方中文手冊

🔗 https://php.net/manual/zh — 必備書籤,含使用者註釋與範例。

一、字串操作

1. strpos($haystack, $needle, $offset = 0) — 尋找首次出現位置

  • 回傳整數位置(0 起始),找不到回傳 false。
  • 嚴格判斷:if (strpos(...) !== false),避免位置 0 被視為 false。
  • $needle 非字串會被轉為 ASCII 碼字元。
  • $offset 不可為負數(不同於 strrpos)。

2. substr($string, $start, $length = null) — 截取子字串

  • $start 正數:從左數;負數:從右數(如 -1 為最後一字元)。
  • $length 省略:截取到結尾;正數:長度;負數:倒數第 N 字元前停止。
  • 超出範圍回傳 false。

3. str_split($string, $split_length = 1) — 字串轉陣列

  • 指定長度切割;預設每字元一元素。
  • $split_length < 1 回傳 false。

4. explode($delimiter, $string, $limit = PHP_INT_MAX) — 分隔字串

  • $delimiter 空字串會回傳 false。
  • $limit > 0:最多回傳 N 元素,最後一元素含剩餘內容。
  • $limit < 0:排除最後 N 元素。
  • $limit = 0 視同 1。

5. preg_split($pattern, $subject, $limit = -1, $flags = 0) — 正則分割

  • PREG_SPLIT_NO_EMPTY:忽略空元素。
  • PREG_SPLIT_DELIM_CAPTURE:保留捕獲群組。
  • PREG_SPLIT_OFFSET_CAPTURE:回傳 [字串, 位移] 陣列。

二、陣列操作

1. array(...) / [] — 建立陣列

$arr = ['key1' => 'val1', 'key2' => 'val2']; // 短語法 PHP 5.4+
$arr = array(0 => 10, 'name' => 'Tom');      // 經典語法
  • 索引可為整數或字串;省略索引自動從 0 起始遞增。
  • 重複索引後者覆蓋前者。

2. array_push($array, $var, ...) — 陣列尾部壓入(堆疊)

  • 回傳新長度;$array 為引用傳遞(&$array)。
  • 等價於 $array[] = $var(單元素時效能更好)。

三、檔案引入

語句找不到檔案行為回傳值處理適用場景
include發出 E_WARNING,腳本繼續可接收被引入檔 return 值模板、非核心模組
require拋出 E_COMPILE_ERROR,腳本中止同上核心設定、必要類別
include_once同 include,但重複引入不執行同上防止函數/類別重複定義
require_once同 require,但重複引入不執行同上框架核心載入器

路徑解析規則:絕對/相對路徑 → 忽略 include_path;單純檔名 → 依 include_path → 當前腳本目錄 → 工作目錄。

四、日期時間

1. time() — 取得 Unix 時間戳(秒)

echo time(); // 1700000000

2. date($format, $timestamp = null) — 格式化輸出

  • $timestamp 省略預設 time()。
  • 常用格式字元:Y 四位年、m 雙位月、d 雙位日、H 24時、i 分、s 秒。
  • 完整格式表:官方文件。
echo date('Y-m-d H:i:s'); // 2024-01-15 14:30:00

3. date_default_timezone_get() / set() — 時區管理

date_default_timezone_set('Asia/Shanghai'); // 中國大陸標準時區
echo date_default_timezone_get();           // Asia/Shanghai
  • 合法時區清單:官方文件。
  • 建議在專案啟動檔(如 bootstrap.php)統一設定。

五、JSON 編解碼

1. json_encode($value, $options = 0, $depth = 512) — 變量轉 JSON 字串

  • 支援除 resource 外所有型別;輸入必須為 UTF-8。
  • 常用 $options:JSON_UNESCAPED_UNICODE(不轉義中文)、JSON_UNESCAPED_SLASHES、JSON_PRETTY_PRINT(美化縮排)。
  • 失敗回傳 false。
$data = ['name' => '中文', 'id' => 1];
echo json_encode($data, JSON_UNESCAPED_UNICODE); // {"name":"中文","id":1}

2. json_decode($json, $assoc = false, $depth = 512, $options = 0) — JSON 字串轉 PHP 變量

  • $assoc = true:回傳關聯陣列;false(預設)回傳 stdClass 物件。
  • 僅支援 UTF-8 輸入。
  • JSON_BIGINT_AS_STRING:大整數以字串呈現避免精度損失。
$json = '{"name":"中文","id":1}';
$arr = json_decode($json, true); // ['name' => '中文', 'id' => 1]

六、檔案操作(資源型流)

1. fopen($filename, $mode, $use_include_path = false, $context = null) — 開啟檔案/URL

失敗回傳 false,觸發 E_WARNING;可用 @ 抑制。

2. fgets($handle, $length = 1024) — 逐行讀取

  • 回傳含換行符的字串;EOF 回傳 false。
  • $length 為最大位元組數(含換行),預設 1KB。

3. fread($handle, $length) — 二進位安全讀取

  • 讀取指定位元組數;遇 EOF 停止。
  • 適合圖片、PDF 等二進位檔。

4. fwrite($handle, $string, $length = null) — 二進位安全寫入

  • 回傳寫入位元組數;失敗回傳 false。
  • 指定 $length 時:寫滿或字串結束即停止。

5. fclose($handle) — 關閉檔案指標

  • 成功回傳 true;釋放系統資源,務必成對呼叫。

6. file_get_contents($filename, ...) — 一次讀入整檔(推薦)

  • 內部支援記憶體映射,效能優於手動 fopen/fread/fclose。
  • 支援 $offset、$maxlen 部分讀取(PHP 5.1+)。
  • 可直接讀取 URL(需開啟 allow_url_fopen)。
$content = file_get_contents('test.txt');
$html = file_get_contents('https://example.com');

實戰小撇步

  • 大檔案逐行處理:while (($line = fgets($fp)) !== false) { ... } 避免記憶體爆炸。
  • CSV 匯入:fgetcsv() 自動處理引號、逗號、換行。
  • 鎖定機制:flock($fp, LOCK_EX) 寫入前加獨佔鎖,讀取用 LOCK_SH。
  • 臨時檔:tmpfile() 建立匿名臨時檔,關閉自動刪除。
  • 路徑安全:用戶輸入路徑務必用 realpath() 規範化並檢查是否在允許目錄下。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
Mode說明指標位置建檔/截斷
r唯讀檔頭否
r+讀寫檔頭否
w唯寫檔頭是(截斷/建檔)
w+讀寫檔頭是
a唯寫檔尾是(建檔)
a+讀寫檔尾是
x建檔唯寫檔頭檔案存在則失敗
x+建檔讀寫檔頭同上