Intereting Posts
Настройка файлов cookie на сайтах Safari Как преобразовать @ упоминание синтаксиса в HTML в приложении для видеоигр? Элегантный способ поиска файлов UTF-8 с помощью спецификации? Способы хранения информации для входа в базу данных Регулярное выражение, как найти все теги A, которые не содержат тег IMG внутри него? CakePHP 3 – Catch Error «Invalid ns» при подключении к серверу mongodb строка json, обращаясь к различным {} объектам с php Как я могу запустить сценарий, когда субдомен достигнет определенного уровня пропускной способности? Шаги для отладки php Curl на окнах Symfony2: вводить текущего пользователя в службу Как обойти политику происхождения креста Шебанг #! unrecognized в Ubuntu, Файл, созданный в Windows7 | Устранение неполадок при кодировании использование разрывов строк в метатегах Отображение сообщений об ошибках в Laravel после перенаправления с контроллера

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

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

Я использую strpos чтобы получить позицию подстроки, и я хочу вставить 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 в PHP Manual

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

 <?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 очень полезным, я использовал его для создания метода, который принимает массив позиций и делает вставку на всех из них, вот так вот:

 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. Я использовал более позднюю функцию для анализа запроса 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. 

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

 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 [ссылка на документацию]. Функция чрезвычайно эффективна и может обрабатывать несколько элементов и другие типы данных.

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

дает вам строку

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