php数组一对一替换

添加时间:17-03-25 所属分类:PHP工具与代码
  http://www.cnblogs.com/Zjmainstay/archi ... words.html
以下方法能实现匹配关键词并分别对关键词做特殊处理的功能。

[code] <?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
//*/
?>[/code]

前篇:PHP获取与清除数组中所有匹配字符串 后篇:河南小伙为捐献造血干细胞吃芹菜瘦身,20天...
发表我的评论


推荐文章   媒体卧底茶叶市场爆惊人内幕:香味可调...   奖励分没了,会影响孩子学特长?   买房前、买房中、买房后 买房全程防“坑...   “你们的建议真的帮不了我…”这大概是...   难得一见的济南老照片!那年泉城路原来...
随机文章   php分页代码,适用于分类列表使用   检查目录是否存在,不存在则建立   php过滤替换输出的数字与非数字   PHP使用 $_GET获取传递值为空时的处理代...   编程从业五年的十四条经验
广告

其他推荐

因为本站所有内容均转载自其它媒体,本意为公众提供免费服务,但并不代表本网赞同其观点,也不能对其真实性验证负责,如稿件版权单位或个人不想在本网发布,请与我联系,本人会立即将其撤除,谢谢.联系方式:atseashawk@163.com QQ:99289555