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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
PHP实现多图片上传类实例
Jul 26 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
如何使用php实现评委评分器
Jul 31 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
Linux系统下安装PHP7.3版本
Jun 26 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
[01:31]完美与DOTA2历程
2014/07/31 DOTA
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
Python for循环与range函数的使用详解
2019/03/23 Python
python中下标和切片的使用方法解析
2019/08/27 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
网络管理专业求职信
2014/03/15 职场文书
委托公证书
2014/04/08 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
2014年校长工作总结
2014/12/11 职场文书
投资意向协议书
2015/01/29 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
中秋节随笔
2015/08/15 职场文书
小学音乐课教学反思
2016/02/18 职场文书
八年级语文教学反思
2016/03/03 职场文书
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
24年收藏2000多部退役军用电台
2022/02/18 无线电
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers