Вставить строку в указанное положение

Есть ли функция PHP, которая может это сделать?

Я использую strpos, чтобы получить позицию подстроки, и я хочу вставить string после этой позиции.

Ответ 3

Попробуйте, он будет работать для любого количества подстрок

<?php
    $string = 'bcadef abcdef';
    $substr = 'a';
    $attachment = '+++';

    //$position = strpos($string, 'a');

    $newstring = str_replace($substr, $substr.$attachment, $string);

    // bca+++def a+++bcdef
?>

Ответ 4

str_replace($sub_str, $insert_str.$sub_str, $org_str);

Ответ 5

Я просто хотел добавить что-то: я нашел ответ о взаимодействии с типом, я использовал его для создания метода, который принимает массив позиций и делает вставку на всех из них, вот так:

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;
}

Ответ 6

Используйте функцию stringInsert, а не функцию putinplace. Я использовал более позднюю функцию для анализа запроса mysql. Хотя вывод выглядел хорошо, запрос привел к ошибке, которая потребовала времени для отслеживания. Ниже приведена моя версия функции stringInsert, требующая только одного параметра.

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

Ответ 7

У меня есть одна моя старая функция:

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

Это небольшая мощная функция, которая безупречно выполняет свою работу.

Ответ 8

Это было мое простое решение, добавляющее текст к следующей строке после того, как оно нашло ключевое слово.

$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.

Ответ 9

Простой и другой способ решения:

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;

}  

Ответ 10

Странные ответы здесь! Вы можете легко вставлять строки в другие строки с помощью sprintf [ссылка на документацию]. Функция чрезвычайно эффективна и может обрабатывать несколько элементов и другие типы данных.

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

дает строку

I like green apples.

Ответ 11

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