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

(0)

相关推荐

  • 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的substr_replace将指定两位置之间的字符替换为*号

    复制代码 代码如下: $username = "zongzi"; echo substr_replace($username,'**','1','2'); 定义和用法 substr_replace() 函数把字符串的一部分替换为另一个字符串. 语法substr_replace(string,replacement,start,length) 参数 描述 string 必需.规定要检查的字符串. replacement 必需.规定要插入的字符串. start 必需.规定在字符串的何处开始

  • php使用str_replace替换多维数组的实现方法分析

    本文实例讲述了php使用str_replace替换多维数组的实现方法.分享给大家供大家参考,具体如下: 在php中,如果使用str_replace替换数组中的字符串,只能替换一维的数组,如果是多维数组的话,不能实现全部字符串的替换.于是就写了一个方法实现多维数组字符串的替换, 首先来测试一下直接使用str_replace来测试数组的替换 $a = array( 'a' => 'bdc#', 'ceshi' => array('c'=>array('f'=>'#')) ); $a =

  • 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中多维数组的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中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使用数组依次替换字符串中匹配项

    先来看个sql语句: select * from table where ctime >= '[date-14]' and ctime <= '[date-1]'; 想把上面这句sql的中括号表示的日期依次换成下面的数组中的元素array('2015-07-01','2015-07-15'); 用正则匹配:找到第一个中括号部分,用第一个元素替换,然后找第二个,再替换 用sprintf函数:因为日期已经计算好,按照顺序替换就可以了. 因为markdown写正则比较麻烦,这里就直接上图片了 ps:

  • 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 多维数组排序(usort,uasort)

    数字索引数组: bool usort( array &$array, callback $cmp_function ) usort函数对指定数组(参数1)按指定方式(参数2)进行排序. 当我们想对多维数组进行排序时,多维数组的每个元素又是一数组类型,而两个数组如何比较大小?这是需要用户自定义的(是按每个数组的第一元素比较还是-). 复制代码 代码如下: <?php //定义多维数组 $a = array( array("sky", "blue"), a

  • 3个PHP多维数组转为一维数组的方法实例

    很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为一维数组例子:一.使用foreach 复制代码 代码如下: <?php   function arr_foreach ($arr)    {      static $tmp=array();        if (!is_array ($arr))       {         return false;      }      fo

  • 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根据某字段对多维数组进行排序的方法

    本文实例讲述了php根据某字段对多维数组进行排序的方法.分享给大家供大家参考.具体分析如下: 根据某字段对多维数组进行排序,在看到array_multisort方法的作用时突然想到,可以用来做这个方法 这段代码可实现根据field字段对数组进行排序 function sortArrByField(&$array, $field, $desc = false){ $fieldArr = array(); foreach ($array as $k => $v) { $fieldArr[$k]

  • 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

随机推荐