Здравствуйте!
Возникла такая проблема. Имеется модуль новостей для сайта, который выводит на главную последние пять новостей и список новостей в архив. Естественно, если новость большая, выводить её целиком, что на главную, что в архив, не совсем рационально, поэтому я сделал банальное "обрезание" новости, примерно такое:
if (length($new) > 256) {
$new = substr($new,0,256)."...";
}
---
Но тогда, возникла проблема следующего рода: если последняя часть новости при таком "обрезании", содержала открывающийся html-тег, то, соответственно, под этот тег уходило и все, что было за новостью.
То есть, по идее, при "обрезании" новости надо следить, чтобы все теги были закрыты. Пытался сделать это по-всякому, -- ничего не выходит.
Подскажите, пожалуйста, как это можно реализовать.
Спасибо.
Не инженерное решение27.08.06 23:27 Автор: ZloyShaman <ZloyShaman> Статус: Elderman
> Но тогда, возникла проблема следующего рода: если последняя > часть новости при таком "обрезании", содержала > открывающийся html-тег, то, соответственно, под этот тег > уходило и все, что было за новостью. > То есть, по идее, при "обрезании" новости надо следить, > чтобы все теги были закрыты. Пытался сделать это > по-всякому, -- ничего не выходит. > Подскажите, пожалуйста, как это можно реализовать.
Во-первых, не совсем понятно каким образом втекстеновости затесался тег. Не должно быть там тега, нет такого слова в русском языке.
Если все же затесался, прежде чем обрезать новость, удали из нее все теги простой регуляркой.
> Спасибо. Пожалуйста :)
:). Ну, допустим, ссылка в новости.27.08.06 20:20 Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
> Во-первых, не совсем понятно каким образом втексте > новости затесался тег. Не должно быть там тега, нет такого > слова в русском языке. :). Ну, допустим, ссылка в новости.
> Если все же затесался, прежде чем обрезать новость, удали > из нее все теги простой регуляркой. Да не хотелось бывсеудалять. Допустим, если в начале новости есть ссылка, то нет особого смысла её убирать, а вот если ссылка есть в месте "обрезания", -- придется.
Тогда вначале нужно определиться со списком разрешенных...27.08.06 22:30 Автор: Heller <Heller> Статус: Elderman
> > Во-первых, не совсем понятно каким образом втексте > > новости затесался тег. Не должно быть там тега, нет > такого > > слова в русском языке. > :). Ну, допустим, ссылка в новости. > > > Если все же затесался, прежде чем обрезать новость, > удали > > из нее все теги простой регуляркой. > Да не хотелось бывсеудалять. Допустим, если в начале > новости есть ссылка, то нет особого смысла её убирать, а > вот если ссылка есть в месте "обрезания", -- придется. Тогда вначале нужно определиться со списком разрешенных тегов. Если все разрешенные теги требуют наличия закрывающего тега, то проверку можно сделать достаточно просто - подсчитать открывающие и закрывающие тэги. Если их число не совпадает, удалить последние открывающие (количество взять как разность между открывающими и закрывающими). Но это подействует только в том случае, если соблюдена сложенность тегов. Если допускаются любые теги, то проблеема становится значительно сложнее и придется писать свой парсер.
Вообще задача весьма нетривиальна. Я бы все же задался вопросом: "А действительно ли так нужны теги, даже если это просто ссылки, в краткой аннотации к новости? Может быть оставить их для полной статьи"? Это вполне нормальное поведение, общепринятое по всему Нету. Ты только потеряешь время на реализацию тегов. К тому же в последнее время у пользователей закрепляется в сознании, что весь блок с кратким изложением новости является одной ссылкой. Появление внутри него сторонних ссылок введет пользователя в замешательство и посеет панику.