PHP функция вставки одной строки в другую строку в определенное место по номеру сивмола.

В листинге ниже приведен PHP код функции вставки одной строки в другую в определенную позицию по номеру символа.

Пояснения по использованию функции

Вызов echo insertStringPos("a123","xxxx",2); вернёт следующее значение: a1xxxx23. То есть в качестве первого параметра функции передаётся строка в которую осуществляется вставка, в качестве второго параметра строка которая вставляется, в качестве третьего параметра номер символа после которого осуществляется вставка. Если в качестве третьего параметра передавать 0, то будет производиться вставка в начало строки. Обратите внимание UTF-8 символы могут состоять из 2-х символов(например буквы русского алфавита), таким образом если Вы определили начало некоторого символа и передаёте и передаёте это число рассматриваемой функции, то вставка может быть осуществлена в разрыв UTF-8 символа и данная ситуация может привести к некорректному отображению символа(иногда к появлению иероглифов), таким образом передавать необходимо именно номер символа после которого осуществляется вставка. Например если в исходной строке у нас 2 символа(не имеются ввиду UTF-8 символы, а символы из одного байта) то для вставки новой строки посередине исходной, необходимо передать в качестве позиции вставки цифру 1.

Ошибочные ситуации при работе с функцией

Функция возвращает false всего в двух случаях: 1) если позиция для вставки превышает количество символов в исходной строке; 2) если позиция для вставки отрицательное число.

Логика работы функции

Логика функции включает в себя преобразование входящих типов данных, не предусмотренных для целей использования функции. Так если в качестве первого или второго параметра передать объект, то внутри функции он будет преобразован в пустую строку, а если объект передать в качестве третьего параметра то преобразован в 0. Таким образом ошибки, в результате которых функция возвращает false описаны выше. Преобразование входящих данных внутри функции осуществляется с второй по четвёртую строки функции. Так же у третьего входящего параметра отбрасывается дробная часть, то есть если третий параметр передан как 4.6 то он будет преобразован в 4, что при переданном первом параметре из 4-х символов(однобайтовых) не приведёт к возникновению ошибки работы функции, иначе бы строка if (($pos < 0) or ($pos > $contentLength)) {return false;} вернула false в качестве результата работы функции.

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: