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 :: Обрезать новость

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
leshiffre
Отправлено: 08 Мая, 2010 - 14:37:43
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Пытаюсь написать свою миницмс. Столкнулся с такой проблемой.

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

Ну вот, попытался примерно описать, чего хочу))
Что-то я никак не могу придумать, как это сделать. Пытался искать - ничего не нашел.
Помогите, пожалуйста.
 
 Top
valenok
Отправлено: 08 Мая, 2010 - 15:41:25
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Логично было бы теги вырезать совсем в 100-символьной строке новости.
Потом находишь первый пробел после 100 миволов и обрезаешь строку до него.
Предварительно находишь регулярными выражениями первые два вхождения тега img.


-----
Truly yours, Sasha.
 
My status
 Top
leshiffre
Отправлено: 08 Мая, 2010 - 17:23:06
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Наверное вы меня неправильно поняли. В новости могут быть ссылки заголовки и тд в первых 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>

Задача осложняется тем, что тэги могут быть вложенными.
 
 Top
valenok
Отправлено: 08 Мая, 2010 - 18:52:37
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Тогда вам придется писать своего рода стэк открытых тегов с каждым новым тегом проверять были ли они закрыты и закрывать нехватающие. Сложнее может оказаться если они еще и неправильно вложены. <a><b>aoeu</a></b>

В разделе уроков есть замечательный урок про регулярные выражениям, пера Чемпиона, который может вам понадобится при вырезании тегов из текста.


-----
Truly yours, Sasha.
 
My status
 Top
akaish
Отправлено: 10 Мая, 2010 - 01:18:51
Post Id



Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Апр. 2010  
Откуда: СПБ


Помог: 0 раз(а)




По тексту полностью согласен с Валенком, по картинкам могу посоветовать написать сжималку на gd.


-----
Скучно...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB