Часто работая с парсерами или просто контентом мы используем различные функции замены подстрок, одна из основных функций str_replace(). Данная функция может вырезать целый массив данных или же заменить на другую подстроку. Один нюанс, у данной функции нет возможности выбора режима работы, например, заменять только первое вхождение подстроки в строке, а такая задача как минимум часто встречается.
Для замены только первой подстроки можно воспользоваться следующей функцией:
function str_replace_once($search, $replace, $text) { $pos = strpos($text, $search); return $pos!==false ? substr_replace($text, $replace, $pos, strlen($search)) : $text; }
Входные параметры функции str_replace_once(), такие же как и у str_replace(), за одним исключением первым параметром можно передавать только строку. Пример использования:
$html = str_replace_once('< head>', '< head>' . PHP_EOL . '< link href="/css.css" rel="stylesheet" type="text/css" />' . PHP_EOL, $html);
P.S. Комментарии на сайте очень нуждаются в возможности вставки кода ;)