智享教程网
白蓝主题五 · 清爽阅读
首页  > 日常经验

PHP脚本正则表达式实战:轻松处理文本匹配与替换

做网站开发时,经常要处理用户输入的数据。比如注册页面要验证手机号、邮箱,或者从一段文字里提取关键信息。这时候光靠字符串函数就显得力不从心了,得上正则表达式。

PHP脚本中,正则表达式是个非常实用的工具。它用一套特殊符号来描述文本模式,能快速判断某段内容是否符合规则,还能做批量替换。

常用的两个函数

PHP里最常用的是 preg_match()preg_replace()。前者用来匹配,后者用来替换。

比如检查一个字符串是不是合法邮箱:

$email = 'test@example.com';
if (preg_match('/^\w+([-+.])?\w+)*@\w+([-.])?\w+)*\.\w+([-.])?\w+)*$/', $email)) {
    echo '邮箱格式正确';
}

这串规则看起来复杂,其实拆开看并不难。开头的 ^ 表示开始,\w+ 是至少一个字母或数字,@ 就是固定的符号,后面的 \.\w+ 匹配像 .com 这样的域名部分,$ 表示结束。这样就能确保整个字符串是一个完整的邮箱地址。

批量替换敏感词

有时候做评论系统,需要把一些不合适的词语替换成星号。比如屏蔽“傻瓜”“垃圾”这类词。

$text = '这个东西真是垃圾,太傻瓜了';
$pattern = '/(垃圾|傻瓜)/';
$safe_text = preg_replace($pattern, '***', $text);
echo $safe_text; // 输出:这个东西真是***,太***了

这里用括号把多个关键词包起来,中间用竖线分隔,表示“或”的关系。每次匹配到其中一个,就替换成三个星号。

提取网页中的电话号码

有时要从一段文本里抓取手机号。国内手机号一般是1开头,共11位数字。

$content = '联系我:13812345678,或者发邮件到abc@demo.com';
$phone_pattern = '/1[3-9]\d{9}/';
preg_match_all($phone_pattern, $content, $matches);
print_r($matches[0]); // 输出:Array ( [0] => 13812345678 )

preg_match_all() 可以找出所有匹配的结果,存进数组里。这样就能一次性提取出所有手机号,方便后续处理。

正则写多了就会发现,它就像一把精准的剪刀,能把乱糟糟的文本剪成想要的形状。刚开始记不住符号没关系,用得多了自然就熟了。遇到问题先想清楚要匹配什么模式,再一点点调试,很快就能上手。