Задача: Есть краткое описание с bbcode тегами
Надо: обрезать описание по определенному количеству символов не трогая теги (т. е сохранив разметку)
Если бы задача стояла убрать теги и обрезать описание - всё было бы тривиально просто
$amount = 4;
$text = "0<img src='image.jpg'>12<b>3</b>456789";
$pattern = ('/((.*?)\S){0,' . $amount . '}/isu');
preg_match_all($pattern, strip_tags(html_entity_decode($text, ENT_QUOTES, 'UTF-8')), $out);
$outtext = $out[0][0];
Результат: 0123 (без разметки и тегов)
Но надо сделать тоже самое при этом сохранив теги (разметку).
Например: обрезать описание до 4 символов (при этом не трогая теги, т.е. оставить разметку) Текст:
0[img=image.jpg]12[b]3[/b]456789
Должен быть результат:
0[img=image.jpg]12[b]3[/b]4
Т.е. 01234 вместе с тегами, т.е. тот что внутри тегов не учитывается в "обрезании"
И второй вариант с учетом того что внутри тегов
Помогите составить паттерн для preg_match_all(), потому что ушло много времени, решить то я её решу, вот только времени жалко, уже много потратил.
На stackoverflow встали в ступор
Хорошая задачка для развития мозгов, да и для ocStore неплохая, например для обрезания краткого описания товаров в списке, с сохранением разметки
Я вот думаю, можно ли вообще решить данную задачу регулярными выражениями?
Кто найдет элегантное решение данной задачи (лучше конечно регулярным выражением) заплачу 790 рублей лицензией на модуль один , и на второй 490 рублей, итого = 1280 рублей, призовой фонд.
UPD: Задача решена, элегантное решение найдено, призовой фонд остался у автора. Уже используется здесь
Решение задачи здесь