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

<?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
相关推荐
-
3个PHP多维数组转为一维数组的方法实例
很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为一维数组例子:一.使用foreach 复制代码 代码如下: <?php function arr_foreach ($arr) { static $tmp=array(); if (!is_array ($arr)) { return false; } fo
-
PHP 多维数组排序(usort,uasort)
数字索引数组: bool usort( array &$array, callback $cmp_function ) usort函数对指定数组(参数1)按指定方式(参数2)进行排序. 当我们想对多维数组进行排序时,多维数组的每个元素又是一数组类型,而两个数组如何比较大小?这是需要用户自定义的(是按每个数组的第一元素比较还是-). 复制代码 代码如下: <?php //定义多维数组 $a = array( array("sky", "blue"), a
-
php根据某字段对多维数组进行排序的方法
本文实例讲述了php根据某字段对多维数组进行排序的方法.分享给大家供大家参考.具体分析如下: 根据某字段对多维数组进行排序,在看到array_multisort方法的作用时突然想到,可以用来做这个方法 这段代码可实现根据field字段对数组进行排序 function sortArrByField(&$array, $field, $desc = false){ $fieldArr = array(); foreach ($array as $k => $v) { $fieldArr[$k]
-
php 删除一个数组中的某个值.兼容多维数组!
复制代码 代码如下: function array_remove_key($array, $keys) { $num = count($keys); $num_last = $num - 1; $this_array_0 = &$array; $last_key = $keys[$num_last]; for ($i = 0; $i < $num_last; $i++) { $this_key = $keys[$i]; $this_var_name = 'this_array_' . $i;
-
PHP的substr_replace将指定两位置之间的字符替换为*号
复制代码 代码如下: $username = "zongzi"; echo substr_replace($username,'**','1','2'); 定义和用法 substr_replace() 函数把字符串的一部分替换为另一个字符串. 语法substr_replace(string,replacement,start,length) 参数 描述 string 必需.规定要检查的字符串. replacement 必需.规定要插入的字符串. start 必需.规定在字符串的何处开始
-
php递归遍历多维数组的方法
本文实例讲述了php递归遍历多维数组的方法.分享给大家供大家参考.具体如下: <?php function get_array_elems($arrResult, $where="array"){ while(list($key,$value)=each($arrResult)){ if (is_array($value)){ get_array_elems($value, $where."[$key]"); } else { for ($i=0; $i<
-
php中count获取多维数组长度的方法
本文实例讲述了php中count获取多维数组长度的实现方法.分享给大家供大家参考.具体分析如下: 先来看看下面程序运行结果: 复制代码 代码如下: $numb=array( array(10,15,30),array(10,15,30),array(10,15,30) ); echo count($numb,1); A.3 B.12 C.6 D.9 答案是B count函数中如果mode被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组
-
php实现遍历多维数组的方法
本文实例讲述了php实现遍历多维数组的方法.分享给大家供大家参考,具体如下: $a=array('fruits'=>array('a'=>'orange','b'=>'grape',c=>'apple'), 'numbers'=>array(1,2,3,4,5,6), 'holes'=>array('first',5=>'second','third') ); //第一种: foreach($a as $list=>$things){ if(is_array
-
PHP中多维数组的foreach遍历示例
复制代码 代码如下: <?php //声明一个三维数组 $info=array( "user"=>array( array(1,"zhangsan",20,"nan"), array(2,"lisi",20,"nan"), array(3,"wangwu",25,"nv") ), "score"=>array( array(1,1
-
php使用str_replace替换多维数组的实现方法分析
本文实例讲述了php使用str_replace替换多维数组的实现方法.分享给大家供大家参考,具体如下: 在php中,如果使用str_replace替换数组中的字符串,只能替换一维的数组,如果是多维数组的话,不能实现全部字符串的替换.于是就写了一个方法实现多维数组字符串的替换, 首先来测试一下直接使用str_replace来测试数组的替换 $a = array( 'a' => 'bdc#', 'ceshi' => array('c'=>array('f'=>'#')) ); $a =
-
php str_replace替换指定次数的方法详解
PHP str_replace方法,替换字符串 格式如下: mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) search 查找的目标值,也就是 needle.一个数组可以指定多个目标. replace search 的替换值.一个数组可以被用来指定多重替换. subject 执行替换的数组或者字符串.也就是 haystack.如果 subject 是一个数组,替换操作将
-
PHP使用数组依次替换字符串中匹配项
先来看个sql语句: select * from table where ctime >= '[date-14]' and ctime <= '[date-1]'; 想把上面这句sql的中括号表示的日期依次换成下面的数组中的元素array('2015-07-01','2015-07-15'); 用正则匹配:找到第一个中括号部分,用第一个元素替换,然后找第二个,再替换 用sprintf函数:因为日期已经计算好,按照顺序替换就可以了. 因为markdown写正则比较麻烦,这里就直接上图片了 ps:
-
php中经典方法实现判断多维数组是否为空
复制代码 代码如下: //判断一个数组是否为空 /** array( ); 空 array( array( ), array( ), array( ) ); 空 array( array( ), array( array( ), array( 1=>1 ) ), array( ) ); 非 空 */ function is_array_null($value) { if (empty($value)) { return $value; } else { return is_array($valu
随机推荐
- asp.net 中国身份证号码验证代码 非正则
- JS实现图片横向滚动效果示例代码
- 使用Ajax局部更新Razor页面的实例代码
- Javascript获取当前时间函数和时间操作小结
- 用 Net 命令使局域网文件批量同步更新
- 详解Java虚拟机管理的内存运行时数据区域
- JS图片等比例缩放方法完整示例
- 如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
- JS按字节截取字符长度实例
- JSP应用的安全问题
- C# 动态加载程序集信息
- Linux环境下段错误的产生原因及调试方法小结
- php给图片加文字水印
- 深入学习python的yield和generator
- 拦截JSP页面,校验是否已登录详解及实现代码
- SQL Server误区30日谈 第28天 有关大容量事务日志恢复模式的误区
- PHP IDE PHPStorm配置支持友好Laravel代码提示方法
- 深入分析MSSQL数据库中事务隔离级别和锁机制
- mysql记录耗时的sql实例详解
- 有一段有意思的代码-javascript现实多行信息
其他
- docker-compose 容器内部 无权限创建目录
- linux 汇编 lea
- LODOP el控件打印
- 易语言如何把文本分隔开
- python调入自己写的模块中的类报错
- ASP.NET Core token 验证
- vue el-checkbox选中状态绑定
- remove_small_objects 无作用
- Function函数式接口
- gofastdfs 集成 spring
- java远程下载 linux 文件
- js毫秒转换成日时分秒
- props在mounted打印不到
- 提取视频.asf指定时间段的帧 python
- 安装 mysqlbinlog
- postgresql 查询语句使用变量
- pyqt5 QMainWindow 状态栏 显示系统时间
- 微信小程序索引栏实现
- 微信小程序echarts使用
- php微信开放平台上传素材接口