dongpalou5352 2015-06-19 07:27
浏览 35
已采纳

如何同时做多个子串替换

I want to do multiple sub string replace based on starting and length. Currently I have an array with values

(user-id,replace-name,starting,length)

my string: "Hi Rameez plz call charlie"

sample array : array('123','Rameez Rami',4,6),  array('124','Charlie Russet',20,7)

And what I want is

Rameez to Rameez charlie to Charlie

my current code is

$linkAddedDescription=Input::get('description');
            foreach ($descriptionMapArray as $key=> $taggedItem) {
            //print_r($taggedItem);die;
                $tagWordStarting=$taggedItem[0];
                $tagWordLength=$taggedItem[1];
                $taggedItemData=$taggedItem[3];
                $descriptionTagLink='<a href="'.URL::to("/").'/user/profile/'.$taggedItemData->id.'">'.$taggedItemData->name.'</a>';

                $linkAddedDescription=substr_replace($linkAddedDescription,$descriptionTagLink,$tagWordStarting,$tagWordLength); 
              //break;
            }
            print_r($linkAddedDescription);die;   
  • 写回答

2条回答 默认 最新

  • dongqiao3214 2015-06-19 10:44
    关注
    $descriptionMapArray=json_decode(Input::get('ideaTagDescriptionMap'));
            $str=Input::get('description');
            $startofsub=0;
            $taggedDescription='';
            foreach ($descriptionMapArray as $key=> $taggedItem) {
                $tagWordStarting=$taggedItem[0];
                $tagWordLength=$taggedItem[1];
                $taggedItemData=$taggedItem[3];
                $descriptionTagLink='<a href="/user/profile/'.$taggedItemData->id.'">'.$taggedItemData->name.'</a>';
    
                $tolen=($tagWordStarting+$tagWordLength);
                $to=$tolen-$tagWordStarting;
                $v=$tolen-$startofsub;
                $sbstr=substr($str,$startofsub,$v);
                $sbstr=substr_replace($sbstr,$descriptionTagLink,($tagWordStarting-$startofsub),$tagWordLength);
                $taggedDescription.=$sbstr;
                $startofsub=$tagWordStarting+$tagWordLength;
            }    
            if($startofsub < strlen(Input::get('description'))){
                $lst_part=strlen(Input::get('description'))-$startofsub;
                $taggedDescription.=substr($str,$startofsub,$lst_part);
            }
            echo '<br/>RESULT:-'.$taggedDescription;
            die;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 机器学习简单问题解决
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写