Pull to refresh

Как написать свой тег, аналог habracut? Просто и понятно!

Reading time2 min
Views724
Ситуация. Пишем сайт, среди возможностей которых есть возможность создания своей статьи, своей новости. Новость/Статья должна иметь кнопку «Читать дальше».

Проблема. Как правильно организовать разделение на «краткий просмотр» / «Полный просмотр»?

Возможные решения. Создать 2 поле для ввода. В первом будет храниться часть статьи для «краткого просмотра», во втором «для полного». Создавать для этого 2 поля в таблице… я думаю не стоит.

Гораздо лучше создать свой тег, который будет разделять статью…

Объясню детальнее.

Предположим мы создаем статью, которая содержит текст:
text1
text2
text3
text4
text5
text6
text7
text8

Нам надо скрыть текст с text3 по text6.
Вводим свой персональный тег, например: <projectname>

Теперь наш текст будет выглядить так:
text1
text2
<projectname>text3
text4
text5
text6</projectname>
text7
text8

Теперь необходимо получить содержимое среди этих тегов… Или заменить текст в теге на кнопку «Прочитать текст».

Получаем текст в тегах в $result[1]
preg_match("/<projectname>(.*)<\/projectname>/is", $text, $result);


Заменяем текст в тегах, на надпись «читать дальше»
preg_replace("/<projectname>(.*)<\/projectname>/is", "<a href="...#more">more</a>", $text);


В самой статье, скрываем тег и выводим содержание…
preg_replace("/<projectname>(.*)<\/projectname>/is", "<a name="more">$1</a>", $text);


Внимание Это жадная квантификация, то есть текст "<tag>ABC</tag> </tag>" на выходе будет «ABC</tag>»
Для ленивой квантификации надо заменить (.*) на (.*?)

PS: В регулярных выражения модификатор i — указывает на игнорирование регистра, s — игнорирование переноса строк!

Всем спасибо за внимание.

Кросспост
Tags:
Hubs:
Total votes 20: ↑11 and ↓9+2
Comments11

Articles