在指定的位置插入string

有没有一个PHP函数可以做到这一点?

我使用strpos来获取子string的位置,我想在该位置后面插入一个string

 $newstr = substr_replace($oldstr, $str_to_insert, $pos, 0); 

http://php.net/substr_replace

 $str = substr($oldstr, 0, $pos) . $str_to_insert . substr($oldstr, $pos); 

substr on PHP手册

试试吧,它可以用于任何数量的子string

 <?php $string = 'bcadef abcdef'; $substr = 'a'; $attachment = '+++'; //$position = strpos($string, 'a'); $newstring = str_replace($substr, $substr.$attachment, $string); // bca+++def a+++bcdef ?> 
 str_replace($sub_str, $insert_str.$sub_str, $org_str); 

只是想添加一些东西:我发现tim cooper的答案非常有用,我使用它来创build一个接受位置数组的方法,并在所有这些方法上进行插入,所以这里是:

 function stringInsert($str,$pos,$insertstr) { if (!is_array($pos)) $pos=array($pos); $offset=-1; foreach($pos as $p) { $offset++; $str = substr($str, 0, $p+$offset) . $insertstr . substr($str, $p+$offset); } return $str; } 

使用stringInsert函数而不是putinplace函数。 我正在使用后来的函数来parsing一个mysql查询。 虽然输出看起来没问题,但是查询导致了一个错误,我花了一段时间才find。 以下是我的版本的stringInsert函数只需要一个参数。

 function stringInsert($str,$insertstr,$pos) { $str = substr($str, 0, $pos) . $insertstr . substr($str, $pos); return $str; } 

我有一个我的旧function:

 function putinplace($string=NULL, $put=NULL, $position=false) { $d1=$d2=$i=false; $d=array(strlen($string), strlen($put)); if($position > $d[0]) $position=$d[0]; for($i=$d[0]; $i >= $position; $i--) $string[$i+$d[1]]=$string[$i]; for($i=0; $i<$d[1]; $i++) $string[$position+$i]=$put[$i]; return $string; } // Explanation $string='My dog dont love postman'; // string $put="'"; // put ' on position $position=10; // number of characters (position) print_r( putinplace($string, $put, $position) ); //RESULT: My dog don't love postman 

这是一个小巧强大的function,完美地执行其工作。

这是我简单的解决scheme,它发现关键字后追加文本到下一行。

 $oldstring = "This is a test\n#FINDME#\nOther text and data."; function insert ($string, $keyword, $body) { return substr_replace($string, PHP_EOL . $body, strpos($string, $keyword) + strlen($keyword), 0); } echo insert($oldstring, "#FINDME#", "Insert this awesome string below findme!!!"); 

输出:

 This is a test #FINDME# Insert this awesome string below findme!!! Other text and data. 

简单和另一种解决方法:

 function stringInsert($str,$insertstr,$pos) { $count_str=strlen($str); for($i=0;$i<$pos;$i++) { $new_str .= $str[$i]; } $new_str .="$insertstr"; for($i=$pos;$i<$count_str;$i++) { $new_str .= $str[$i]; } return $new_str; } 

奇怪的答案在这里! 您可以使用sprintf [链接到文档]轻松地将string插入到其他string中。 该function非常强大,可以处理多个元素和其他数据types。

 $color = 'green'; sprintf('I like %s apples.', $color); 

给你的string

 I like green apples. 
 function insSubstr($str, $sub, $posStart, $posEnd){ return mb_substr($str, 0, $posStart) . $sub . mb_substr($str, $posEnd + 1); }