Приветствую.
Собственно, задачку свою я решаю, но мне нужна помощь, как бы красивее,
нагляднее или с заделом на масштабирование оформить решение.
В приводимой ниже задачке, язык программирования сильно роли не играет.
Я, для примера, буду использовать php
Условие задачи:
В базе данных (БД) имеются текстовые поля, которые будут выводиться на сайте.
(по-хорошему - пусть это будет текст статьи).
Вот так это хранится в БД
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin tristique, dui nec vestibulum rutrum,
ipsum arcu laoreet lorem, non tempus felis sem ut dolor. Donec lacus orci, aliquet id tempus in,
pretium non odio. Donec id risus molestie, scelerisque nibh sed, aliquet lectus. Mauris dictum laoreet scelerisque.</p>
{html_box1}
<p>In tincidunt augue sed urna dapibus, et vehicula libero malesuada. Maecenas gravida turpis
hendrerit sodales suscipit. Maecenas hendrerit, velit nec ullamcorper porta, nibh lectus iaculis lorem,
eu bibendum odio augue varius sapien. Sed eleifend, ante efficitur venenatis commodo, lacus libero efficitur odio,
eget consectetur sem odio nec sapien.</p>
{html_box2}
<p>Fusce condimentum nibh at quam sodales, nec luctus quam feugiat. Duis varius bibendum sagittis.
Nam eget mi hendrerit, mattis lorem ut, gravida nisl. Praesent vehicula elit eget accumsan tincidunt.
Pellentesque quis egestas ipsum. Sed vitae bibendum ipsum.</p>
{html_box1}
{gallery1}
Как видите, по тексту разбросаны метки {html_box1}(2 раза), {html_box2}, {gallery1}
В эти метки будут подставляться свои "готовые к показу кусочки данных в виде html"
!!! Предвосхищая сразу вопрос о том, зачем метки - вставляй сразу "готовые кусочки данных в html"
отвечу.
Эти "готовые кусочки данных в html" надобно проставлять во многих статьях, описаниях и т.д.
При этом, "кусочки данных" - они изменяются время от времени.
Такое изменение должно сразу отразиться везде, где надо.
А, возможно, потребуется сразу отключить определенные "готовые кусочки данных в html".
Просматривать каждую запись в БД и править - не комильфо.
И, кстати, временно отключить вывод, не значит плностью его убрать из этого места навсегда.
Итак, продолжаем.
Вопрос по самой реализации
Я понимаю, что перед тем, как показать на экране, мне необходимо
"просмотреть" текстовы фрагмент на нахождение подобных меток
и, в случае обнаружения, заменить их "готовыми кусочками данных в html для каждой метки"
Теперь сами вопросы:
1. Лучше подобные вещи делать через "регулярные выражения" или "строковыми командами php"?
2. Не могу определиться откуда вызывать методФункцию(ЗаменаМеток) для решения подобной задачи
- если у меня метки только в статьях. Тогда сделать метод в самом классе Post (класс Post - это пример названия класса)
или если метки будут в статьях, описаниях категорий и в других местах сайта
- запихать в один модуль всех своих функций? (типа my_function.php)
или выделить отдельный файлФункций с необходимыми методами (my_function_parse.php)
или же
- сделать отдельный класс со статическим методом. Например (Parse::do(arguments))
(возможно метод do() будет один, или потребуется еще несколько)
Программирование идет на ООП
статьи - это класс Post
модели статей - это класс Post_m
и т.д.
В общем, как рассуждать в подобных вещах?
P.S.
Усложнение задачи.
Я наперед не знаю, есть ли метки в текстовом фрагменте и какие они.
Получается, прежде, чем я буду использовать методЗаменыМеток,
я всегда должен буду подготовить ВСЕ данные по замене по ВСЕМ возможным меткам?
Например, в ассоциативный массив загнать данные
[{html_box1}] => '<div class="html_box">Здесь html_box1</div>'
[{html_box1}] => '<div class="html_box">Здесь html_box2</div>'
[{gallery11}] => '<div class="gallery">Здесь галлерея</div>'
и т.д.
Теперь Второй вопрос:
"Кто как думает, размышляет над решением подобной задачи"
Где видятся подводные камни?
Какое может быть оптимальное решение?
Заранее благодарю всех, кто принял участие в решении задачи.
Как всегда, потихоньку поставлю плюсики.
Сообщение отредактировал ray1978: 19 Сентябрь 2018 - 04:49