php正则替换函数的整理

PHP中常用preg_replace和preg_replace_callback进行正则替换,前者用于简单替换,支持模式修饰符及批量处理数组;后者通过回调函数实现复杂逻辑,如动态修改匹配内容,更安全灵活。

php正则替换函数的整理

PHP中常用的正则替换函数主要是preg_replacepreg_replace_callback,它们都基于PCRE(Perl Compatible Regular Expressions)正则引擎,功能强大且灵活。下面对这两个核心函数进行整理说明。

preg_replace — 执行正则表达式的搜索和替换

语法:

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

参数说明:

$pattern:要搜索的模式,可以是字符串或字符串数组$replacement:用于替换的字符串或字符串数组。 $subject:要搜索和替换的原始字符串或数组。 $limit:可选,每个模式在每个 subject 上执行替换的最大次数,默认为-1(无限制)。 $count:可选,用于接收实际替换次数的变量。

示例:

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

$text = ‘联系电话:13812345678’;
$pattern = ‘/d{11}/’;
$replacement = ‘***********’;
$result = preg_replace($pattern, $replacement, $text);
// 输出:联系电话:***********

支持修饰符:

i:忽略大小写 m:多行模式 s:让.匹配换行符 u:支持UTF-8$text = “HellonWorld”;
echo preg_replace(‘/^World/m’, ‘PHP’, $text); // 多行模式下匹配第二行开头

preg_replace_callback — 使用回调函数进行正则替换

当替换逻辑较复杂时,比如需要动态处理匹配内容,使用该函数更合适。

语法:

mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )

参数说明:

$callback:每次匹配后调用的回调函数,接收匹配结果数组作为参数,返回替换字符串。

示例:将数字加1

$text = ‘价格是100元和200元’;
$result = preg_replace_callback(‘/d+/’, function($matches) {
return $matches[0] + 1;
}, $text);
// 输出:价格是101元和201元

高级用法:反转匹配到的单词

$text = “hello world”;
$result = preg_replace_callback(‘/[a-z]+/’, function($match) {
return strrev($match[0]);
}, $text);
// 输出:olleh dlrow

常见注意事项

模式必须用分隔符包围,如//、##等,避免与内容冲突时可用其他符号。 如果$subject是数组,替换会在每个元素上执行。 反向引用在$replacement中可用$1、$2等,注意不要与变量混淆。 preg_replace存在被滥用导致代码注入的风险(如/e修饰符已被废弃),推荐使用preg_replace_callback代替。

小技巧:批量替换多个模式

$patterns = [‘/bappleb/’, ‘/bbananab/’];
$replacements = [‘苹果’, ‘香蕉’];
$text = “I like apple and banana”;
echo preg_replace($patterns, $replacements, $text);
// 输出:I like 苹果 and 香蕉

基本上就这些。掌握好preg_replace和preg_replace_callback,基本能应对大多数文本替换需求。关键在于写对正则模式,以及合理使用回调处理复杂逻辑。

以上就是php正则替换函数的整理的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1340671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 04:03:26
下一篇 2025年12月13日 04:03:40

相关推荐

发表回复

登录后才能评论
关注微信