Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Обрезать текст до определенного html-тега, если он имеется.
Как видно из этой строчки, берется только первые 500 символов. Все html теги конечно автоматически режутся в соцсетях, но если в новости, в этом месте тег разорвется, то он так и покажется некрасивым текстом. Например:
"Текст, текст, текст!. Текст <p style="text-al..."
Как мне сделать так, чтобы если тег не закрыт, то вообще не учитывать его и обрезать ещё до его начала? Должно получиться вот так:
"Текст, текст, текст!. Текст ..."
2-й вопрос.
Если допустим в тексте новости встречается определенный символ, например ®, как мне сделать "обрезку" до этого символа, включая его? Например:
"Текст, текст, текст, текст ® текст."
а должно получиться:
"Текст, текст, текст, текст"
dcc0
Отправлено: 16 Сентября, 2016 - 08:09:42
Участник
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Цитата:
Должно получиться вот так:
"Текст, текст, текст!. Текст ..."
Брать текст до тега с помощью регулярного выражения, preg_match подойдет.
2) на данный вопрос - фактически тот же ответ.
Не знаю, как работает RSS.
Когда в свое время делал ленту новостей, но не RSS, то сделал два поля, которые для пользователя являются зримо одним. В первом поле храню именно обрезанный заголовок, чтобы избежать использования даже регулярок. И это оправдывает себя, когда надо вывести всё, то вывожу оба поля, когда куда-то, допустим, надо сформировать список новостей, то вывожу одно поле из БД.
Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
dcc0 не обращайте внимание на rss, просто представьте, что работаете просто с текстом и переменными.
А не подскажете, чтобы я долго голову не ломал, как с помощью preg_match это сделать? В тексте ведь могут быть и другие такие теги до этого. Как мне определить последний?
dcc0
Отправлено: 16 Сентября, 2016 - 08:40:06
Участник
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
А вообще лучше изначально проектировать БД и админку так, чтобы обрезание строки было задачей публикатора.
----- Март 2021. Бросил программирование
Heavenanvil
Отправлено: 16 Сентября, 2016 - 08:52:22
Частый гость
Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
dcc0, если теги имеются вначале, а они имеются почти всегда, и если они успешно закрываются или хотя бы до конца открываются, а не обрезаются на половине, то их и не отображает в итоге нигде. <_< сложное предложение получилось.
update
Ок, strip_tags реально помог лучше, чем я думал. Спасибо огромное.
А как на счет символа ®? Обрезать всё, что после него, включая его.
Разобрался. Сделал немного по другому. В основном помог strrpos, для поиска с конца.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.