Автор Тема: Обрезание новостей  (Прочитано 3755 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fog

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://slang.corpuscul.com
Обрезание новостей
« : 21 Октября 2002, 19:14:41 »
Задача:

Если новость сильно длинная, ограничить её длинну, и сделать ссылку на полную.

1. нехочется делать выборку полных текстов из базы, а потом резать. Можно ли сразу доставать из MySQL первые 1000 символов поля? Имхо нет...

2. Могут быть открытые теги. (т.е. Открыт тег до 1000 а закрыт после, и в итоге получаем  главную страничку, с незакрытыми тегами)Как из закрыть? Может есть какая-нибкдь ф-я которая закрывает все открытые теги (не стандартная само собой, кажется стандартных таких нет)


И как вообще подобные штуки откатываются?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Обрезание новостей
« Ответ #1 : 21 Октября 2002, 19:19:27 »
1. Можно. Читай ман по мускл
2. Не храни теги в базе.
AS IS...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Обрезание новостей
« Ответ #2 : 21 Октября 2002, 19:24:31 »
fog
обычно в администрированиии новостей для этого просто добавляют отдельное поле "Краткая новость".

ThE0ReTiC
Цитировать
2. Не храни теги в базе.
иногда надо
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Обрезание новостей
« Ответ #3 : 21 Октября 2002, 19:26:04 »
Цитировать
иногда надо

Хм...
Например?
AS IS...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Обрезание новостей
« Ответ #4 : 21 Октября 2002, 19:29:09 »
Например новости оформляются в визуальном online-редакторе (тот который только под IE работает).
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Обрезание новостей
« Ответ #5 : 21 Октября 2002, 21:11:55 »
Цитировать
Не храни теги в базе.

А если нужно текст как-то выделить? bold`ом например?
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Обрезание новостей
« Ответ #6 : 21 Октября 2002, 21:40:25 »
fog
В мане по мускулу поищи substr - это спасет тебя.
А что касается тэгов - придется, видать тебе самому писать.
Это не такая уж сложная проблема.
Решается примерно так: заводишь ассоциативный массив, ключами которого служат значения различных тегов. Бежишь по тексту. За каждый открытый тег увеличиваешь соответствующий элемент массива, за каждый закрытый - уменьшаешь.
Потом вставляешь в конец закрывающие теги для всех ненулевых элементов.

А если не хочешь геммороиться - составь список закрывающих тегов (ну, там, болд, италик, спан, фонт колор etc.) и вставляй их всем скопом. Я не думаю, что твои новости будут в виде таблиц оформляться (а если будут - подумай еще раз о концепции новостей)
TANSTAAFL

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Обрезание новостей
« Ответ #7 : 21 Октября 2002, 22:17:28 »
Цитировать
В мане по мускулу поищи substr - это спасет тебя.
или left:


Цитировать

`LEFT(str,len)\'
     Returns the leftmost `len\' characters from the string `str\':

          mysql> select LEFT(\'foobarbar\', 5);
                  -> \'fooba\'

     This function is multi-byte safe.

First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Обрезание новостей
« Ответ #8 : 21 Октября 2002, 22:19:01 »
Узнаёшь какие теги открыты, а какие закрыты:

preg_match_all
("/<[^<>]+>/"$o_tags);    // все открытые
preg_match_all("/<\\/[^<>]+>/"$cl_tags); // все закрытые

Думаю проверку и закрытие оставшихся тегов сделаешь сам ;)
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Обрезание новостей
« Ответ #9 : 21 Октября 2002, 22:26:56 »
подытожим.
fog
наиболее правильным является метод отдельного хранения кратких аннотаций, безо всякого форматирования.
Так у меня сделано на одном сайте.
Там же, в поиске, способом, который предложил Maniac, вынимется из текста кусок - начало, первые 500 символов, с запасом, а потом им делается stripslashes, что очень очень правильно, и полностью снимает воторой вопрос.
На странице с маленькими кусочками новостей вообще не должно быть тегов.
Только функция называется не substr, a substring, или left

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

Так что, fog, на фоне такого многообразия вариантов, твое заявление о том, что "Имхо, нет", становится несостоятельным.
Я даже больше скажу. открой раз в жизни документацию по mysql и посмотри раздел строковых функций. ты будет потрясен открывшимися перспективами.

Оффлайн Антошка

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 56
  • +0/-0
  • 0
    • Просмотр профиля
Обрезание новостей
« Ответ #10 : 30 Октября 2002, 11:22:25 »
Читал, читал... скоко много пишут...
Сам вчера делал такую же задачу...
насчет первого, сразу куча вопросов к специалистам... вот вы говорите обрезать на 20 символе (НУ если грубо)
ПРИМЕР:
Думаю проверку и закрытие оставшихся тегов сделаешь сам
РЕЗУЛЬТАТ:
Думаю проверку и зак...

И чего там человек хотел сказать не понятно...
Короче, мне не понравилось что слова обрубаются на полуслове, и поэтому пришлось возиться с тремя различными функциями, код дома остался кому интересно напише, но теперь у меня обрубается только целыми слова код весит 3 строки (маленьких)

А насчет тегов... мне кажется что надо переработать или вид новостей или заключить в табличный вид... как известно таблица сама обрубит ;)
так что с этим я не мучался...

Оффлайн fog

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://slang.corpuscul.com
Обрезание новостей
« Ответ #11 : 05 Ноября 2002, 17:22:41 »
Всем спасибо. Я нашел своеобразное решение. Буду воплощать его в жизнь ;-)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28