php数组一对一替换实现代码


Posted in PHP onAugust 31, 2012
<?php 
header("Content-type: text/html; charset=utf-8"); 
function multiple_replace_words($word,$replace,$string,$tmp_match='#a_a#'){ 
preg_match_all('/'.$word.'/',$string,$matches); //匹配所有关键词 
$search = explode(',','/'.implode('/,/',$matches[0]).'/'); 
//不存在匹配关键词 
if(empty($matches[0])) return false; 
//特殊替换设置 
$count = count($matches[0]); 
foreach($replace as $key=>$val){ 
if(!isset($matches[0][$key])) unset($replace[$key]); //剔除越界替换 
} 
//合并特殊替换数组与匹配数组 
for($i=0;$i<$count;$i++){ 
$matches[0][$i] = isset($replace[$i])? $replace[$i] : $matches[0][$i]; 
} 
$replace = $matches[0]; 
//防止替换循环,也就是替换字符仍是被替换字符,此时将其临时替换一个特定字符$tmp_match 
$replace = implode(',',$replace); 
$replace = str_replace($word,$tmp_match,$replace); //临时替换匹配字符 
$replace = explode(',',$replace); 
//替换处理 
$string = preg_replace($search,$replace,$string,1); //每次只替换数组中的一个 
$string = str_replace($tmp_match,$word,$string); //还原临时替换的匹配字符 
return $string; 
} 
//示例1 
$string = 'aaabaaacaaadaaa'; 
$word = 'aaa'; 
$replace = array(null,'xxx','yyy'); 
echo '原文:'.$string.'<br/>输出:'.multiple_replace_words($word,$replace,$string).'<br/><br/>'; 
//示例2 
$string = '中文aaab中文ccaaad中文eee'; 
$word = '中文'; 
$replace = array(null,'(替换中文2)','(替换中文3)'); 
echo '原文:'.$string.'<br/>输出:'.multiple_replace_words($word,$replace,$string); 
/* 
输出结果: 
原文:aaabaaacaaadaaa 
输出:aaabxxxcyyydaaa 
原文:中文aaab中文ccaaad中文eee 
输出:中文aaab(替换中文2)ccaaad(替换中文3)eee 
//*/

作者:Zjmainstay
PHP 相关文章推荐
深入php socket的讲解与实例分析
Jun 13 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 #PHP
PHP的简易冒泡法代码分享
Aug 28 #PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 #PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 #PHP
PHP 图片水印类代码
Aug 27 #PHP
PHP setTime 设置当前时间的代码
Aug 27 #PHP
PHP 透明水印生成代码
Aug 27 #PHP
You might like
建立文件交换功能的脚本(一)
2006/10/09 PHP
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
基于python log取对数详解
2018/06/08 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
python实现简单飞行棋
2020/02/06 Python
python map比for循环快在哪
2020/09/21 Python
Python创建自己的加密货币的示例
2021/03/01 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
佳能法国商店:Canon法国
2019/02/14 全球购物
MySQL面试题目集锦
2016/04/14 面试题
个人求职信范文
2014/05/24 职场文书
工会趣味活动方案
2014/08/18 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
大学生党课心得体会
2016/01/07 职场文书
会议主持词通用版
2019/04/02 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB