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

PHP 正則表達式函數大全:preg_match、preg_replace、preg_grep、preg_split 等用法與示例

     編輯:PHP 相關知識

PHP 正則表達式函數大全

PHP 的 PCRE 函數族(preg_*)是處理複雜字符串匹配、替換、分割、過濾的標準工具。本文系統整理 7 個核心函數的簽名、行為差異與典型示例。

函數速查表

函數用途返回值
preg_match($pattern, $subject, &$matches)匹配一次,找到即停止0/1(匹配次數)
preg_match_all($pattern, $subject, &$matches)全局匹配所有匹配總次數
preg_replace($pattern, $replace, $subject, $limit=-1, &$count)替換所有匹配替換後的字符串/數組
preg_filter($pattern, $replace, $subject)僅保留發生替換的元素過濾後的數組
preg_grep($pattern, $input)返回匹配模式的數組元素匹配的子數組
preg_split($pattern, $subject, $limit=-1, $flags=0)正則分割字符串分割後的數組
preg_quote($str, $delimiter=null)轉義正則元字符轉義後的字符串

核心示例

1. preg_match vs preg_match_all

$pattern = '/[0-9]/';
$subject = 'weuyr3ui76as83s0ck9';

$m1 = []; $m2 = [];
$t1 = preg_match($pattern, $subject, $m1);   // 1,只匹配第一個 '3'
$t2 = preg_match_all($pattern, $subject, $m2); // 7,匹配所有數字
// $m1 = ['3']; $m2 = [['3','7','6','8','3','0','9']]

2. preg_replace vs preg_filter(支援數組模式/替換)

$pattern = ['/[0123]/', '/[456]/', '/[789]/'];
$replace = ['啊', '啦', '嗦'];
$subject = 'weuyr3ui76as83s0ck9';

$r1 = preg_replace($pattern, $replace, $subject);
// 'weuyr啊ui嗦啦as嗦啊s啊ck嗦'(保留未匹配字符)

$r2 = preg_filter($pattern, $replace, $subject);
// 同 preg_replace,但若 $subject 為數組,僅返回發生替換的鍵值對

3. preg_grep(數組過濾)

$subject = ['weuy', 'r3ui', '76as83', 's', '0ck9'];
$arr = preg_grep('/[0-9]/', $subject);
// ['r3ui', '76as83', '0ck9']

4. preg_split(正則分割,比 explode 強大)

$subject = '你2好3啊!';
$arr = preg_split('/[0-9]/', $subject);
// ['你', '好', '啊!']

最佳實踐建議

  • 模式字符串使用單引號避免雙重轉義,分隔符推薦 ~ 或 # 減少 / 轉義。
  • 大數據量匹配優先 preg_match_all + 循環處理,避免巨大 $matches 佔用記憶體。
  • preg_replace_callback 替換邏輯複雜時替代 /e 修飾符(已移除)。
  • 嚴格驗證(如郵箱、URL)優先使用 filter_var() 內建過濾器,正則作為補充。

熟練掌握這 7 個函數,能解決 95% 以上字符串處理需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved