информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медПортрет посетителяЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Hint 27.08.06 19:53  Число просмотров: 2092
Автор: Heller <Heller> Статус: Elderman
Отредактировано 27.08.06 19:55  Количество правок: 1
<"чистая" ссылка>
> Но тогда, возникла проблема следующего рода: если последняя
> часть новости при таком "обрезании", содержала
> открывающийся html-тег, то, соответственно, под этот тег
> уходило и все, что было за новостью.
> То есть, по идее, при "обрезании" новости надо следить,
> чтобы все теги были закрыты. Пытался сделать это
> по-всякому, -- ничего не выходит.
> Подскажите, пожалуйста, как это можно реализовать.

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

> Спасибо.
Пожалуйста :)
<programming>
[Perl] Корректное "обрезание" новости. 27.08.06 19:40  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Здравствуйте!
Возникла такая проблема. Имеется модуль новостей для сайта, который выводит на главную последние пять новостей и список новостей в архив. Естественно, если новость большая, выводить её целиком, что на главную, что в архив, не совсем рационально, поэтому я сделал банальное "обрезание" новости, примерно такое:
if (length($new) > 256) {
    $new = substr($new,0,256)."...";
}

---
Но тогда, возникла проблема следующего рода: если последняя часть новости при таком "обрезании", содержала открывающийся html-тег, то, соответственно, под этот тег уходило и все, что было за новостью.
То есть, по идее, при "обрезании" новости надо следить, чтобы все теги были закрыты. Пытался сделать это по-всякому, -- ничего не выходит.
Подскажите, пожалуйста, как это можно реализовать.
Спасибо.
Не инженерное решение 27.08.06 23:27  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
Ввести новое поле - краткое описание новости. Поле заполняется вручную оператором.
Такой вариант есть. 27.08.06 23:50  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
И я уже собирался его использовать, но в последний момент решил поискать решения поизящнее.
Hint 27.08.06 19:53  
Автор: Heller <Heller> Статус: Elderman
Отредактировано 27.08.06 19:55  Количество правок: 1
<"чистая" ссылка>
> Но тогда, возникла проблема следующего рода: если последняя
> часть новости при таком "обрезании", содержала
> открывающийся html-тег, то, соответственно, под этот тег
> уходило и все, что было за новостью.
> То есть, по идее, при "обрезании" новости надо следить,
> чтобы все теги были закрыты. Пытался сделать это
> по-всякому, -- ничего не выходит.
> Подскажите, пожалуйста, как это можно реализовать.

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

> Спасибо.
Пожалуйста :)
:). Ну, допустим, ссылка в новости. 27.08.06 20:20  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> Во-первых, не совсем понятно каким образом втексте
> новости затесался тег. Не должно быть там тега, нет такого

> слова в русском языке.
:). Ну, допустим, ссылка в новости.

> Если все же затесался, прежде чем обрезать новость, удали
> из нее все теги простой регуляркой.
Да не хотелось бывсеудалять. Допустим, если в начале новости есть ссылка, то нет особого смысла её убирать, а вот если ссылка есть в месте "обрезания", -- придется.
Тогда вначале нужно определиться со списком разрешенных... 27.08.06 22:30  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
> > Во-первых, не совсем понятно каким образом втексте
> > новости затесался тег. Не должно быть там тега, нет
> такого

> > слова в русском языке.
> :). Ну, допустим, ссылка в новости.
>
> > Если все же затесался, прежде чем обрезать новость,
> удали
> > из нее все теги простой регуляркой.
> Да не хотелось бывсеудалять. Допустим, если в начале
> новости есть ссылка, то нет особого смысла её убирать, а
> вот если ссылка есть в месте "обрезания", -- придется.
Тогда вначале нужно определиться со списком разрешенных тегов. Если все разрешенные теги требуют наличия закрывающего тега, то проверку можно сделать достаточно просто - подсчитать открывающие и закрывающие тэги. Если их число не совпадает, удалить последние открывающие (количество взять как разность между открывающими и закрывающими). Но это подействует только в том случае, если соблюдена сложенность тегов. Если допускаются любые теги, то проблеема становится значительно сложнее и придется писать свой парсер.

Вообще задача весьма нетривиальна. Я бы все же задался вопросом: "А действительно ли так нужны теги, даже если это просто ссылки, в краткой аннотации к новости? Может быть оставить их для полной статьи"? Это вполне нормальное поведение, общепринятое по всему Нету. Ты только потеряешь время на реализацию тегов. К тому же в последнее время у пользователей закрепляется в сознании, что весь блок с кратким изложением новости является одной ссылкой. Появление внутри него сторонних ссылок введет пользователя в замешательство и посеет панику.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach