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

PHP 正則表達式入門到實戰:PCRE 函數全解析(匹配、搜索、替換、分割、Ubb)

     編輯:PHP 綜合知識

前言

PCRE(Perl Compatible Regular Expressions)是 PHP 強大的文本處理利器。本文通過 12 個 Demo 系統講解元字符、修飾符、貪婪/非貪婪、分組捕獲、常用函數(preg_match/all/grep/replace/split/quote)及 UBB 標簽替換實戰。

一、基礎匹配:preg_match(Demo1)

$pattern = '/php/';
$str = 'fsdfsdfsdphpfsdfs';
if (preg_match($pattern, $str)) echo '匹配'; // 只要包含連續 php 即可

二、元字符與量詞(Demo2-3)

符號含義示例
+前導字符 ≥1 次/ph+p/ 匹配 php、phhp
*前導字符 ≥0 次/ph*p/ 匹配 pp、php、phhp
?前導字符 0 或 1 次/ph?p/ 匹配 pp、php
.任意單字符(除換行)/p.p/ 匹配 php、p@p
{n}前導字符恰好 n 次/ph{3}p/ 匹配 phhhp
{n,m}前導字符 n~m 次/ph{3,5}p/
^字符串開頭/^php/
$字符串結尾/php$/
|或條件/php|asp/
()分組捕獲/(this) (is) (php|asp)/

三、字符類與預定義類(Demo3)

  • [a-z]、[0-9]、[asv]:任一字符
  • [^abc]:非 abc 字符
  • \w = [a-zA-Z0-9_]、\W 反義
  • \d = [0-9]、\D 反義
  • \s 空白字符、\S 非空白
  • \b 單詞邊界、\B 非邊界
  • 轉義特殊字符:\+ \. \* 等

四、修飾符(Demo4)

  • i:忽略大小寫
  • m:多行模式(^$ 匹配行首尾)
  • x:忽略模式空白(可寫註釋)
  • A:強制從開頭匹配(等同 ^)
  • U:非貪婪模式(關鍵!)

五、常用函數實戰

1. 陣列過濾:preg_grep(Demo5)

$lang = ['php','asp','jsp','python','ruby'];
print_r(preg_grep('/^p/', $lang)); // 以 p 開頭

2. 全局匹配:preg_match_all(Demo8)

preg_match_all('/php[1-5]/', 'php5 php6 php4', $out);
// $out[0] = ['php5','php4']

3. 引用替換:preg_replace(Demo10-11)

echo preg_replace('/php[1-6]/', 'oneStopWeb', 'php5 php6'); // 替換所有

// UBB 標簽轉 HTML(非貪婪 U 修飾符)
$pattern = '/(\[b\])(.*)(\[\/b\])/U';
$replace = '<strong>\2</strong>';
echo preg_replace($pattern, $replace, '[b]php5[/b] [b]php6[/b]');
// 輸出:<strong>php5</strong> <strong>php6</strong>

4. 分割字符串:preg_split(Demo12)

print_r(preg_split('/[.@]/', 'oneStopWeb@163.com'));
// ['oneStopWeb', '163', 'com']

5. 特殊字符轉義:preg_quote(Demo9)

echo preg_quote('PHP is $150'); // PHP is \$150

六、郵箱驗證完整案例(Demo7)

$pattern = '/^([\w\.]{2,255})@([\w\-]{1,255})\.([a-z]{2,4})$/';
preg_match($pattern, 'test@163.com'); // 合法

七、在線工具推薦

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