zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

PHP数组代码 实现 替换 一对一
2023-06-13 09:14:35 时间
复制代码代码如下:

<?php
header("Content-type:text/html;charset=utf-8");
functionmultiple_replace_words($word,$replace,$string,$tmp_match="#a_a#"){
preg_match_all("/".$word."/",$string,$matches);//匹配所有关键词
$search=explode(",","/".implode("/,/",$matches[0])."/");
//不存在匹配关键词
if(empty($matches[0]))returnfalse;
//特殊替换设置
$count=count($matches[0]);
foreach($replaceas$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