답변:
$newstr = substr_replace($oldstr, $str_to_insert, $pos, 0);
$str = substr($oldstr, 0, $pos) . $str_to_insert . substr($oldstr, $pos);
putinplace 함수 대신 stringInsert 함수를 사용하십시오. 나중에 함수를 사용하여 mysql 쿼리를 구문 분석했습니다. 출력은 괜찮아 보이지만 쿼리 결과 오류를 추적하는 데 시간이 걸렸습니다. 다음은 하나의 매개 변수 만 필요한 stringInsert 함수 버전입니다.
function stringInsert($str,$insertstr,$pos)
{
$str = substr($str, 0, $pos) . $insertstr . substr($str, $pos);
return $str;
}
나는 그것을 위해 내 오래된 기능 중 하나를 가지고있다 :
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
이것은 완벽하게 작동하는 작고 강력한 기능입니다.
이것은 키워드를 찾은 후 다음 줄에 텍스트를 추가하는 간단한 해결책이었습니다.
$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.
그냥 무언가를 추가하고 싶었습니다. 팀 쿠퍼의 대답이 매우 유용하다는 것을 알았습니다. 위치 배열을 받아들이고 모든 위치에서 삽입을 수행하는 방법을 만드는 데 사용했습니다.
편집 : 내 이전 함수$insertstr
는 1 문자로가정하고 배열이 정렬된 것처럼 보입니다. 이것은 임의의 문자 길이에서 작동합니다.
function stringInsert($str, $pos, $insertstr) {
if (!is_array($pos)) {
$pos = array($pos);
} else {
asort($pos);
}
$insertionLength = strlen($insertstr);
$offset = 0;
foreach ($pos as $p) {
$str = substr($str, 0, $p + $offset) . $insertstr . substr($str, $p + $offset);
$offset += $insertionLength;
}
return $str;
}
이상한 답변이 여기에! sprintf [문서 링크]를 사용하여 다른 문자열에 쉽게 문자열을 삽입 할 수 있습니다 . 이 기능은 매우 강력하며 여러 요소 및 기타 데이터 유형도 처리 할 수 있습니다.
$color = 'green';
sprintf('I like %s apples.', $color);
당신에게 문자열을 제공합니다
I like green apples.
'I like apples.'
변수로 사용합니다. 따라서 %s
문자열에서 먼저 삽입 해야합니다. 원래 문제로 돌아 가기