function rep_str($str,$a,$b,$c,$d)
{
   $str_array = explode("#",$str);
   return $str_array[0].$a.$str_array[1].$b.$str_array[2].$c.$str_array[3].$d;
}

解决方案 »

  1.   

    <?
    /*
    str ='ookkk#oooook#oo#ook'; 
    想要的效果是用不同的字符替换#, 
    比如传入'1,2,3,4',得到结果为'ookkk1oooook2oo3ook', 
    */
    $str ='ookkk#oooook#oo#ook';
    $m = "1,2,3,4";
    $ar = explode("#",$str);
    $t=array_slice(explode(",",$m),0,-1);
    $tem ="";
    foreach ($ar as $k =>$v) {
    $tem.=$v.$t[$k];
    }
    echo $tem;
    ?>
      

  2.   

    我没说清楚,传的参数可能超过坑的数目,$str ='ookkk#oooook#oo#ook';比如说传了五个参数'A,B,C,D,E',得到结果为'ookkkAoooookBooCook',D,E就自动忽略了
      

  3.   

    $str ='ookkk#oooook#oo#ook'; $replaceArray = array('A','B','C','D');$d = explode('#',$str);
    $l = count($d)-1;$i = 0;
    foreach($d as $k=>$v)
    {
    if($k != $l)  
    {

    $rstr .= $v.($replaceArray[$i] ? $replaceArray[$i] : '#');
    $i++;

    else
    {
    $rstr .= $v;
    }
    }
    echo $rstr;
      

  4.   

    让人想起以前在学校做的C语言练习题........ :)$str ='ookkk#oooook#oo#ook'; $i = 0;
    $j = 0;
    $replaceArray = array('A','B','C','D');
    while($str[$j] != '')
    {
    if($str[$j] == '#') 
    {
    $str[$j] = $replaceArray[$i] ? $replaceArray[$i] : '#';
      $i++;
    }
    $j++;
    }
    echo $str;
      

  5.   

    $str1='1,2,3,4,2,23,41';//要替换成的字符串,假设是以,隔开
    $str2 ='ookkk#oooook#oo#ook'; //替换的字符串
    $arrstr1 = explode(',',$str1);
    $arrstr2 = explode('#',$str2);
    echo $str2;
    var_dump($arrstr1);
    foreach ($arrstr2 as $key=>$str2tmp){
    if ($res) {
    $res .=$arrstr1[$key -1];
    }
       $res .= $str2tmp;
    }
    这个可以,我已经运行了,满足你的要求
      

  6.   

    echo $str2; 
    var_dump($arrstr1); 
    这两句是我调户用的,去掉,呵呵
      

  7.   

    谢谢各位,我用preg_replace写了一个$search_arr =array_fill(0,3,'/#/');$qq =preg_replace($search_arr,array('1','2','3','4'),'ookkk#oooook#oo#ook',1);