• 技术文章 >php教程 >php手册

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

    2016-06-13 11:58:26原创525
    复制代码 代码如下:


    header("Content-type: text/html; charset=utf-8");
    function multiple_replace_words($word,$replace,$string,$tmp_match='#a_a#'){
    preg_match_all('//m.sbmmt.com/m/'.$word.'//m.sbmmt.com/m/',$string,$matches); //匹配所有关键词
    $search = explode(',','//m.sbmmt.com/m/'.implode('/,/',$matches[0]).'//m.sbmmt.com/m/');
    //不存在匹配关键词
    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.'
    输出:'.multiple_replace_words($word,$replace,$string).'

    ';
    //示例2
    $string = '中文aaab中文ccaaad中文eee';
    $word = '中文';
    $replace = array(null,'(替换中文2)','(替换中文3)');
    echo '原文:'.$string.'
    输出:'.multiple_replace_words($word,$replace,$string);
    /*
    输出结果:
    原文:aaabaaacaaadaaa
    输出:aaabxxxcyyydaaa
    原文:中文aaab中文ccaaad中文eee
    输出:中文aaab(替换中文2)ccaaad(替换中文3)eee
    //*/


    作者:Zjmainstay
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP中使用foreach和引用导致程序BUG的问题介绍 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php 简单的缓存全站函数介绍• 学习PHP重定向的三种方法• 关于UEditor编辑器远程图片上传失败的解决办法• php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)• 建立文件交换功能的脚本(二)
    1/1

    PHP中文网