讲师中心 微信公众号
AI工具推荐 视频效率加速

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

冬婷酱_3527

冬婷酱_3527

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

|

573人浏览过

|

来源于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免费学习笔记(深入)”;

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • 返回匹配总数(int),不是布尔值;匹配结果默认存在 $matches[0](全匹配)、$matches[1](第一个捕获组)……
  • 注意 PREG_SET_ORDER 和 PREG_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 修饰符

不加 u,preg_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() 和实际返回值类型,比反复改模式更省时间。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

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

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

4596

2023.06.20

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

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

3081

2023.07.05

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

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

8562

2023.07.05

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

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

812

2023.08.11

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

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

520

2023.08.31

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

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

693

2023.11.13

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

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

406

2023.11.17

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

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

719

2023.12.06

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP基础入门课程
PHP基础入门课程

共33课时 | 3.5万人学习

PHP开发基础之字符串篇
PHP开发基础之字符串篇

共7课时 | 1.6万人学习

PHP字符串处理(玉女心经版)
PHP字符串处理(玉女心经版)

共11课时 | 2.1万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn