php中用正则匹配多个结果,随机替换其中一个结果_PHP教程
php
使用
匹配
多个
字符
替换
正则
用
简单
结果
随机
用正则匹配字符,如果是全部替换很简单,使用preg_replace就可以了。但是我现在要对得到的多个匹配成功的结果,随机替换其中的一个,这个就有点麻烦了。自己写了个函数解决,不知道有没有其它更好的方法。例子 “I have a dream. I have a dream. I have a dream. I have a dream.” 匹配式 '/i/'。 上面的字符串中有4个匹配结果,我只要随机替换其中的一个。i替换成hell.
我的代码如下:
[php]
//正则处理函数
function rand_replace_callback($matches) {
global $g_rand_replace_num, $g_rand_replace_index, $g_rand_replace_str;
$g_rand_replace_index++;
if($g_rand_replace_num==$g_rand_replace_index){
return $g_rand_replace_str;
}else {
return $matches[0];
}
}
//随机正则替换函数 如果有多个匹配的单元,随机替换其中的一个。
//注意global $g_rand_replace_num, $g_rand_replace_index, $g_rand_replace_str;这三个全局变量,不要与其它的冲突
//依赖一个正则处理函数 记录匹配单元总数,取一个总数范围内的随机值,在正则处理函数中判断相等则处理。
function rand_preg_replace($pattern, $t_g_rand_replace_str, $string)
{
global $g_rand_replace_num, $g_rand_replace_index, $g_rand_replace_str;
preg_match_all($pattern, $string, $out);$find_count = count($out[0]); //匹配的单元总数
$g_rand_replace_num = mt_rand(1, $find_count); //符合正则搜索条件的集合
$g_rand_replace_index = 0; //实际替换过程中的index
$g_rand_replace_str = $t_g_rand_replace_str;
echo "现在找到符合的有{$find_count}个
";
";
$ss=preg_replace_callback($pattern,"rand_replace_callback",$string);
return $ss; www.2cto.com
}
$string = "I have a dream. I have a dream. I have a dream. I have a dream.";
echo rand_preg_replace('/I/', "hell", $string);
扩展思考,我想减低第一个结果被替换的概念怎么办呢? 有些情况,第一个被替换不是很好,只需要少量的结果是第一个被替换。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发
