| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 23.11.2003
Адрес: Инет
Сообщения: 130
![]() ![]() |
Есть статья, эта статья публикуется в новостях, нужно чтобы статья публиковалась не полностью, а например первые 500 символов. substr() не катит, т.к. текст может модержать теги. Чистить на теги тоже не вариант, они нужны. Даже не знаю че делать. То ли считать каждый открывающи1йся тег, то ли регулярку писать... Может кто сталкивался?
|
|
|
|
|
# 2 |
|
МОД-Оператор ЭВМ
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
1. Теги не нужны. Это миф.
2. Если их всё же оставить, то неизбежно прийдется закрывать Pahan-Hubbitus в свое время решал похожую задачу. Был вариант с внедрением iframe'ов в страницу. В таком случае все незакрытые теги закроет браузер пользователя. |
|
|
|
|
# 4 | |
|
МОД-Оператор ЭВМ
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
По теме: рега простая /\<((\w+)|(\/\w+))[^\>]*\>/ получаешь два массива. Открытые элементы и закрытые. Далее вычитаешь массивы, и получаешь разность - т.е. все незакрытые элементы. Дописываешь в конец текста. Всё. Последний раз редактировалось RaZEr; 20.11.2004 в 13:19. |
|
|
|
|
|
# 5 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Но известные неудобства такого подхода всем известны, поэтому конечно лучше это делать регой, но тогда возникает немного другая проблема: в общем случае, даже если все открытые теги в порядке их открытия грамотно закрыть, то может получиться ерунда полная (например это крайне актуально с таблицами), да и потом, если подобная обрезка идет точно по количеству символов, то может получиться что обрезано будет по какому-то тегу, соответственно он появится в тексте, как "лишний" текст. Вобщем чтобы все это сделать абсолютно универсальным, для любого HTML-кода, придется писать анализатор текста, схожий с тем что имеется в браузере.... Из всего этого я сделал вывод что RaZEr отчасти прав, теги там не нужны, тоесть нужны, но отнюдь не все, и совсем не в полном объеме. Просто нужно оставить заведомо "безопасные" и "необходимые" (их набор из задачи конкретной), например <b>, <i>, <h1-6>, <u>, <a> и оставлять только их, вырезая остальные (это легко делается указанием allowable_tags в функции strip_tags). В этом случае, чаще всего вид текста практически не портится в этом маленьком куске, и в месте с тем ничего не развалится в основном документе. И закрыть их не будет никакой проблемы одной единственной регой...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 8 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
. Но дело даже не в этом, если бы только одну эту проблему нужно было решить при таком подходе...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|