You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式在Regexr中可用但PHP preg_match返回空值求助

问题解决:PHP preg_match匹配失败原因及修复

问题分析

你的正则表达式在regexr.com能正常匹配,但PHP中preg_match返回空,核心原因是待匹配文本包含换行符——PHP的preg_match默认情况下,正则里的.(点号)不会匹配换行符,而regexr通常默认开启了「DOTALL」模式(让点号匹配所有字符包括换行)。

修复方案

有两种可行的修复方式:

方式1:添加s修饰符

在正则表达式末尾加上s,开启DOTALL模式,让.匹配包括换行在内的所有字符:

preg_match('/Donor Comment:\*(.*?)\*/s', $msg, $donor_comment);

方式2:替换为[\s\S]*?

用[\s\S](匹配所有空白和非空白字符,即所有字符)代替.,无需额外修饰符:

preg_match('/Donor Comment:\*([\s\S]*?)\*/', $msg, $donor_comment);

验证说明

修复后,PHP的preg_match就能正确捕获跨多行的捐赠评论内容,和regexr上的匹配结果一致。

内容的提问来源于stack exchange,提问作者Enjabain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:40:38