TypechoJoeTheme

至尊技术网

登录
用户名
密码

PHP正则表达式实战:10个高频使用场景详解

2025-12-06
/
0 评论
/
1 阅读
/
正在检测是否收录...
12/06


正文:

正则表达式是PHP开发中处理字符串的利器,但很多人面对复杂的模式匹配时仍会头疼。本文将通过10个真实场景,带你从基础到进阶掌握PHP正则匹配,所有代码均经过实战验证。


一、手机号验证

表单提交时,常需验证手机号格式(以中国大陆为例):
php

$phone = '13800138000';  
if (preg_match('/^1[3-9]\d{9}$/', $phone)) {  
    echo '手机号格式正确';  
} else {  
    echo '请输入11位有效手机号';  
}


解析^1[3-9]确保以1开头且第二位是3-9,\d{9}$匹配后续9位数字。


二、提取HTML中的图片链接

从富文本内容中提取所有图片地址:
php

$html = '
...
'; preg_match_all('/]+src="([^"]+)"/i', $html, $matches); print_r($matches[1]); // 输出: Array ( [0] => pic1.jpg [1] => pic2.png )


技巧[^>]+匹配除>外的任意字符,避免贪婪匹配问题。


三、密码强度检测

要求密码包含大小写字母、数字且长度8-20位:
php

$password = 'Pass1234';  
if (preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,20}$/', $password)) {  
    echo '密码强度合格';  
}


核心:使用正向预查(?=)分别验证小写、大写和数字的存在性。


四、中文姓名校验

匹配2-4个中文字符的姓名(不含特殊符号):
php

$name = '张三';  
if (preg_match('/^[\x{4e00}-\x{9fa5}]{2,4}$/u', $name)) {  
    echo '姓名有效';  
}


注意:必须添加u修饰符支持Unicode中文范围。


五、URL参数提取

从URL中解析出查询参数:
php

$url = 'https://example.com/?id=100&name=test';  
preg_match('/[?&]([^=]+)=([^&]+)/', $url, $params);  
// $params[1]为参数名,$params[2]为值


六、日志时间戳提取

从Nginx日志中提取时间信息:
php

$log = '127.0.0.1 - - [10/Oct/2023:15:30:22 +0800]';  
preg_match('/\[(.*?)\]/', $log, $time);  
echo $time[1]; // 输出: 10/Oct/2023:15:30:22 +0800


七、多空格替换为单空格

清理文本中的连续空格:
php

$text = "Hello    World";  
$result = preg_replace('/\s+/', ' ', $text);  
// 输出: "Hello World"


八、匹配特定后缀文件

列出目录中所有.jpg文件:
php

$files = ['a.jpg', 'b.png', 'c.jpg'];  
$jpgFiles = preg_grep('/\.jpg$/i', $files);  
print_r($jpgFiles); // 输出: Array ( [0] => a.jpg [2] => c.jpg )


九、隐藏手机号中间四位

数据脱敏处理:
php

$phone = '13800138000';  
echo preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $phone);  
// 输出: 138****8000


十、复杂表单数据解析

处理name[]=value格式的表单数据:
php

$input = 'user[name]=John&user[age]=30';  
preg_match_all('/([\w]+)\[([\w]+)\]=([^&]+)/', $input, $matches);  
/* 输出:  
Array (  
    [0] => user[name]=John  
    [1] => user  
    [2] => name  
    [3] => John  
) */

字符串处理模式匹配PHP正则匹配preg_match正则表达式案例
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/40504/(转载时请注明本文出处及文章链接)

评论 (0)