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
Форумы портала PHP.SU :: Версия для печати :: Обрезать новость
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Обрезать новость

Страниц (1): [1]
 

1. leshiffre - 08 Мая, 2010 - 14:37:43 - перейти к сообщению
Пытаюсь написать свою миницмс. Столкнулся с такой проблемой.

Есть новость в формате хтмл. Нужно написать функцию, которая обрежет новость до 100 символов к примеру. (Ну в общем как на обычных новостных цмс). Проблема заключается в том, что нужно закрыть все открытые хтмл теги и т.п., чтоб ничего никуда не уползло. И еще если в новости много больших картинок, она должна обрезаться до приемлемых размеров (например, если новость состоит из 10 картинок, оставить 2, а не по правилу 100 символов).

Ну вот, попытался примерно описать, чего хочу))
Что-то я никак не могу придумать, как это сделать. Пытался искать - ничего не нашел.
Помогите, пожалуйста.
2. valenok - 08 Мая, 2010 - 15:41:25 - перейти к сообщению
Логично было бы теги вырезать совсем в 100-символьной строке новости.
Потом находишь первый пробел после 100 миволов и обрезаешь строку до него.
Предварительно находишь регулярными выражениями первые два вхождения тега img.
3. leshiffre - 08 Мая, 2010 - 17:23:06 - перейти к сообщению
Наверное вы меня неправильно поняли. В новости могут быть ссылки заголовки и тд в первых 100 символах. Они должны остаться в превью. Для наглядности приведу пример

Пусть обрезаем до 20 символов (не считая тэги)

< h 2 >Подзаголовок < / h 2 >
< a h r e f = 'site.ru' > ссылка на сайт < / a>
новость продолжается

Так вот 20ый символ - буква н в слове 'на'. После того, как обрежу до сюда надо будет еще закрыть открытые хтмл тэги.

в итоге должно получиться чего-нибудь такое

< h 2 >Подзаголовок < / h 2 >
< a h r e f = 'site.ru' > ссылка н... < / a>

Задача осложняется тем, что тэги могут быть вложенными.
4. valenok - 08 Мая, 2010 - 18:52:37 - перейти к сообщению
Тогда вам придется писать своего рода стэк открытых тегов с каждым новым тегом проверять были ли они закрыты и закрывать нехватающие. Сложнее может оказаться если они еще и неправильно вложены. <a><b>aoeu</a></b>

В разделе уроков есть замечательный урок про регулярные выражениям, пера Чемпиона, который может вам понадобится при вырезании тегов из текста.
5. akaish - 10 Мая, 2010 - 01:18:51 - перейти к сообщению
По тексту полностью согласен с Валенком, по картинкам могу посоветовать написать сжималку на gd.

 

Powered by ExBB FM 1.0 RC1