0

0

PHP怎么匹配正则表达式 PHP字符串正则匹配【函数】

冰火之心

冰火之心

发布时间:2026-02-28 19:09:01

|

513人浏览过

|

来源于php中文网

原创

preg_match()只匹配首个结果,适合判断存在性或提取单个值;preg_match_all()匹配全部,返回总数并支持preg_set_order等排序模式;需注意分隔符配对、u修饰符处理utf-8、错误返回值区分(false为语法错,0为无匹配)。

php怎么匹配正则表达式 php字符串正则匹配【函数】

preg_match() 是 PHP 里最常用的正则匹配函数

它只找第一个匹配项,适合判断“有没有”或提取单个结果。别用 ereg()(已废弃)或 mb_ereg()(不支持 PCRE),PHP 7.0+ 只认 preg_* 系列。

常见错误现象:Warning: preg_match(): Unknown modifier 'x' —— 多半是分隔符没配对,比如写成 preg_match('/abc/i', $str) 却漏了结尾斜杠;或者用了中文标点当分隔符。

  • 必须用成对的分隔符包裹模式,常用 /#~,避免和模式内字符冲突(比如匹配路径时用 #^/user/d+#/^/user/d+// 清爽)
  • 修饰符写在末尾分隔符后,如 i(忽略大小写)、m(多行模式)、s(点号匹配换行)
  • 第三个参数 $matches 是可选数组,传了才会填充捕获组;不传就只返回 0(无匹配)、1(有匹配)或 false(正则语法错)

preg_match_all() 用来找全部匹配

当你需要提取所有邮箱、所有 URL、所有数字片段时,必须用它。它不会中途退出,会扫完整个字符串。

使用场景:日志解析、HTML 片段提取、批量替换前的预检。

立即学习PHP免费学习笔记(深入)”;

10分钟内自己学会PHP
10分钟内自己学会PHP

10分钟内自己学会PHP其中,第1篇为入门篇,主要包括了解PHP、PHP开发环境搭建、PHP开发基础、PHP流程控制语句、函数、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、日期和时间等内容;第2篇为提高篇,主要包括MySQL数据库设计、PHP操作MySQL数据库、Cookie和Session、图形图像处理技术、文件和目录处理技术、面向对象、PDO数据库抽象层、程序调试与错误处理、A

下载
  • 返回匹配总数(int),不是布尔值;匹配结果默认存在 $matches[0](全匹配)、$matches[1](第一个捕获组)……
  • 注意 PREG_SET_ORDERPREG_PATTERN_ORDER 的区别:前者按“每次匹配为一行”,后者按“每个捕获组为一行”,日常提取字段推荐用 PREG_SET_ORDER
  • 性能影响:如果字符串超长、模式又没限制(比如 .* 开头),容易回溯爆炸,导致超时;加 u 修饰符处理 UTF-8 字符串,否则中文可能被截断

匹配失败但没报错?检查定界符和转义

preg_match() 返回 false 表示正则本身写错了(比如括号不配对、量词缺目标),返回 0 才是“没匹配到”。很多人混淆这两者,结果调试半天发现是模式语法问题。

常见错误现象:preg_match('/d{3,5}/', '12') === 0(正常) vs preg_match('/d{3,5/', '123') === false(少了个 })。

  • Windows 路径里的反斜杠要双写:'C:\\Program Files\\',不然会被 PHP 字符串解析吃掉一层
  • 匹配美元符号 $ 时,要么用 $,要么换分隔符(如 #$#),否则它会被当成行尾锚点
  • var_dump(preg_last_error()) 查错误码,PREG_NO_ERROR 以外的值说明模式非法

中文、emoji、生僻字匹配必须加 u 修饰符

不加 upreg_match('/./u', '?') 能正确匹配一个 Unicode 字符;不加的话,可能只取前两个字节,导致乱码或空匹配。

兼容性影响:PHP 5.3.4+ 支持 u,老环境(如某些嵌入式 PHP)可能不支持,但现代项目基本不用考虑。

  • [u4e00-u9fa5] 这种写法无效 —— PCRE 不识别 u,得用 x{4e00}-x{9fa5} 并确保有 u
  • emoji 如 ? 是四字节 UTF-8,没 u 修饰符时会被切成两半,匹配失败
  • 函数名带 mb_ 前缀的(如 mb_eregi())都不处理 Unicode 正则,别混用
正则真正难的不是写模式,而是理解 PCRE 引擎怎么回溯、怎么选分支;线上出问题时,先看 preg_last_error() 和实际返回值类型,比反复改模式更省时间。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

528

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

258

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

762

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

219

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

355

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

244

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

544

2023.12.06

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号