Всем привет! Я хочу разбить текст на элементы массива так, чтобы картинки и текст были в отдельных элементах. Нужно это для того, чтобы текст взять в абзацы, а картинки в теги figure с дополнительной обработкой получения ссылки, вместо названия изображения.
У меня получился вот такой код:
$arr = preg_split("#(\n\n|(?=\[IMG=[^\]]+\]))#isu", $text);
Пример текста вот:
Какой-то текст [IMG=3902565d3789b88c50b.jpg] Текст после картинки без переноса[IMG=3902565d3789b88c50b.jpg]
Текст после изображения с переносом
Обычный абзац
Текст перед картинкой вконце всего текста [IMG=3902565d3789b88c50b.jpg]
И вот результат:
Array(
[0] => Какой-то текст
[1] => [IMG=3902565d3789b88c50b.jpg] Текст после картинки без переноса
[2] => [IMG=3902565d3789b88c50b.jpg]
[3] => Текст после изображения с переносом
[4] => Обычный абзац
[5] => Текст перед картинкой вконце всего текста
[6] => [IMG=3902565d3789b88c50b.jpg]
)
Не получается разделить текст, который находится после первой картинки, потому что он не соответствует условию, а использовать "назад смотряшие" нельзя, потому что для них нужна фиксированная длинна.
Я попробовал таким способом:
$arr = preg_split("#(\n\n|(?=\[IMG=[^\]]+\])|(?:\[IMG=[^\]]+\])(?!\[IMG))#isu", $text);
Но получилось только хуже, потому что теперь разбивка происходит по картинкам и они совсем пропадают из массива.