在指定的位置插入string
有没有一个PHP函数可以做到这一点?
我使用strpos
来获取子string的位置,我想在该位置后面插入一个string
。
$newstr = substr_replace($oldstr, $str_to_insert, $pos, 0);
$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); }