Нужно первый перевод строки в тексте заменить на тот же перевод строки + тег картинки. Делаю примерно так: PHP: $pattern = "/(.*)(<br+[ \/]?>)(.*)/i"; $text = "какой-то текст.<br />Новый абзац"; preg_replace($pattern, "\\1\\2 <img src="/files/img1.jpg" />\\3", $text, 1); В итоге возвращается исходная строка (замена не производится). Где я ошибся?
PHP: $text = "какой-то текст.<br />Новый абзац"; $text = str_replace(Array('<br />','<br>'),'<br /><img src="/files/img1.jpg" />',$text);
Блин, ну так-то любой сможет, я и сам догадался. Но я хочу именно через регулярку, тем более хочу поднатаскаться в ней. А так по вашему варианту ещё не хватает третьего варианта: PHP: $text = "какой-то текст.<br />Новый абзац"; $text = str_replace(Array('<br />', '<br/>', '<br>'),'<br /><img src="/files/img1.jpg" />',$text); Да и вообще делать подобным способом, имхо, это скатываться к быдлокоду.
Но если очень хочется то как то так: PHP: $pattern = "/(<br[ \/]*>)/i"; $text = "какой-то текст.<br />Новый абзац"; echo preg_replace($pattern, '$1 <img src="/files/img1.jpg" />', $text, 1);
Всё, понял почему у меня не работало. Вообще изначально написал так: PHP: $pattern = "/(<br+[ \/]?>)/i"; Сейчас плюсик убрал, а вместо вопроса как раз его поставил. Всё работает.