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的类树(支持无限分类)
Oct 09 PHP
PHP中for循环语句的几种变型
Nov 26 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
PHP闭包(Closure)使用详解
May 02 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
Yii实现的多级联动下拉菜单
Jul 13 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
php常用字符函数实例小结
Dec 29 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 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
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
vue+eslint+vscode配置教程
2019/08/09 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
计算机专业毕业生求职信分享
2013/12/24 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
仓库规划计划书
2014/04/28 职场文书
个人担保书范文
2014/05/20 职场文书
个人工作年终总结
2015/03/09 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
医者仁心观后感
2015/06/17 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
2015团员个人年度总结
2015/11/24 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
apache ftpserver搭建ftp服务器
2022/05/20 Servers
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers