在日常开发中,经常会遇到需要从一段文本里提取信息的情况。比如用户注册时输入的手机号是否合规,或者批量修改一批文件名中的特定字符。这时候,PHP脚本结合正则表达式就能派上大用场。
什么是正则表达式
正则表达式是一种描述字符串规则的工具。它可以用简短的符号匹配复杂的文本模式。PHP 内置了对正则的支持,最常用的函数是 preg_match 和 preg_replace。
验证邮箱格式
用户提交表单时,邮箱格式很容易出错。用正则可以快速判断是否符合基本规范。
$email = "test@example.com";
if (preg_match("/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/", $email)) {
echo "邮箱格式正确";
} else {
echo "邮箱格式有误";
}
批量替换内容
重装系统前备份的配置文件里,可能包含旧的IP地址。如果要统一替换,手动改太费劲。写个PHP脚本跑一下更省事。
$content = "服务器地址:192.168.1.100,备用地址:192.168.1.101";
$new_content = preg_replace("/192\.168\.1\.(\d+)/", "10.0.0.$1", $content);
echo $new_content;
// 输出:服务器地址:10.0.0.100,备用地址:10.0.0.101
提取日志中的关键信息
系统日志通常杂乱无章。比如想找出所有访问失败的时间点,可以用正则抓取。
$log = "[2025-04-05 10:23:11] 登录失败 [2025-04-05 10:25:44] 登录成功";
preg_match_all("/\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\] 登录失败/", $log, $matches);
print_r($matches[1]);
// 得到所有失败时间
注意转义字符
正则里有些符号有特殊含义,比如点号(.)代表任意字符,要匹配真正的点就得写成 \。路径或URL中经常出现这类情况,别忘了转义。
调试小技巧
写完正则不确定对不对?可以先在在线测试工具里试一试。把样例数据贴进去,看能不能正确匹配。确认无误后再集成进PHP脚本,避免运行时才发现问题。