| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > удаление html тегов и кода html |
| Автор: Elfebet 29.9.2006, 18:00 |
| пробовал функцию предложенную в дркб, но прога виснет если html текст выше 100 кб, посоветуйте плиз какой лучше применить способ отображения только тескта без html тегов? |
| Автор: Elfebet 29.9.2006, 18:30 | ||
только не веббраузер. |
| Автор: sOckets 29.9.2006, 18:40 |
| А что искать в тексте теги и удалять их религия не позволяет или знаний не хватает ? |
| Автор: Yanis 29.9.2006, 18:41 |
| Ну тогда RegExpr тебе в руки. P. S. Я опередил бугора? |
| Автор: BUGOR 29.9.2006, 18:57 |
| Yanis, может ты ещё и регулярку составишь? |
| Автор: Zero 29.9.2006, 19:24 | ||
Врядли это быстрый способ. А автору помоему нужно именно это... |
| Автор: Alexeis 29.9.2006, 19:34 |
Как он будет работать это будет зависеть от реализации. Например, построчная реализания будет довольно быстрой. Простейший вариант это удалять все что в угловых скобках и заменить спец. символы на на их видимые аналоги. |
| Автор: sOckets 29.9.2006, 19:38 | ||
|
| Автор: Elfebet 29.9.2006, 20:40 |
| ну мне вообще-то надо найти несколько предложений (от 1 до 20) . так как цель поставили искать предложения до точки, нужно удалять ненужные теги, а то точка в тэгах частый символ и получается лабуда. |
| Автор: Fedia 30.9.2006, 09:39 | ||||
Удалить теги можно например так:
|
| Автор: BUGOR 30.9.2006, 10:29 | ||
| Fedia, это очень тормозной вариант, на страничке весом всего 2КБ он у меня вообще завис. Попробуй вот эту функцию:
На файле весом 100 Кб отработала за 5 секунд. |
| Автор: Fedia 30.9.2006, 12:05 | ||||
Конечно, я просто не доработал функцию, и из-за этого происходило зацикливание:
Попробуй этот вариант. Обрабатывает данную страницу форума менее чем за секунду. Добавлено @ 12:07 Ты обещал Yanis-у подождать сутки. Слово нужно держать |
| Автор: Alexeis 30.9.2006, 15:07 |
| ребята вы забыли, что в тексте html символы < > надо заменить на "<" ">" Причем это не все спец. символы. Откройте справочник по HTML... Их там может быть более сотни. Их обычно заменяет браузер. |
| Автор: BUGOR 30.9.2006, 15:30 | ||
Fedia, я не сомневался, что на стандартных функциях работать будет быстрее, зато какая элегнтость достигается с использованием regexpr, хотя я бы использовал твой вариант, скорость решает в данном случае.
Каюсь |
| Автор: Fedia 30.9.2006, 23:04 | ||
С этим не поспоришь. Разработчики TRegExpr потрудились на славу. Думаю, если бы они решали задачу исключительно удаления тегов, то преодолеть скоростные характеристики их решения было бы трудновато. Elfebet, если уж вопрос стоит так:
|
| Автор: BUGOR 1.10.2006, 06:24 | ||
Вряд ли это возможно, pos написана в виде ассемблерной вставки и довольно хорошо оптимизирована, может ты быть её можно ускорить на какие-то 10%, но это надо очень прилично извратиться имхо, а смысла в этом особого нет. |
| Автор: Fedia 1.10.2006, 06:45 | ||
Где-то с 1-1.5 года назад на др. форуме встречал ссылку на рейтинг функций, аналогов Pos. Рейтинг выставлялся в зависимости от скорости поиска субстроки в заранее разработанных тестовых примерах. Разница по скорости у топовых функций по сравнению со стандартной Pos была значительна (точно не помню процентных соотношений, но более 10% точно). При реализации этих функций разработчики делали акцент не только на ассемблере, но и на модификации алгоритма поиска. |
| Автор: Quadr0 1.10.2006, 22:35 |
| ... |
| Автор: Fedia 1.10.2006, 23:02 | ||
Каждую итерацию цикла ? Код внимательно смотрел ? |
| Автор: Quadr0 1.10.2006, 23:06 |
| ... |
| Автор: Fedia 1.10.2006, 23:14 | ||
Согласен, но случаи, когда используется эта строчка кода достаточно редки, поэтому ее оптимизацией я пренебрег. Попробую потестить. |
| Автор: Fedia 2.10.2006, 02:29 | ||
Твой вариант на самом деле оказался фантастически быстр. Пару часов я пытался доработать свою функцию, пытаясь преодолеть скоростную планку твоей. Но как оказалась только применение Pos из моей функции работает дольше всей твоей функции целиком, не говоря уже об остальной части с delete, Copy, сложением строк и т.д. Твоя функция работала в пару сотен раз быстрее Поэтому я решил вообще написать функцию с нуля другим способом, без сдвигов и копирований:
|
| Автор: Elfebet 2.10.2006, 11:05 |
| Fedia, Quadr0, ребята ну спасибки вам зы Fedia +1 Quadr0 +1 |
| Автор: Fedia 2.10.2006, 11:22 |
Всегда пожалуйста И почему "+" так приятно получать ? |
| Автор: Quadr0 2.10.2006, 13:07 |
| ... |
| Автор: Fedia 3.10.2006, 00:14 |
Это не самое страшное зло Спасибо ! |
| Автор: BetaCoder 5.4.2009, 09:16 |
| А как в последнем коде сделать чтобы кроме начального и завершающего тега < и > отсеивался еще { и } , [ и ] и такая конструкция & и ; ? Это актуально для форумов, там же ВВ коды, их тоже как-но надо отсеивать. Ну не копировать же под каждый тег свою функцию... |
| Автор: MetalFan 5.4.2009, 16:24 |
| BetaCoder, некрофил чтоли? )) |
| Автор: Alix 6.4.2009, 15:20 | ||
На скорую руку:
|
| Автор: BetaCoder 6.4.2009, 15:31 |
| Нужного-ненужного... А если у вас программа для загрузки РСС, что по вашему, пользователям интересно будет смотреть не на текст сообщения, а на всякие '[b' & nbsp h} и прочую лабуду... Спасибо кстати за код =) Пригодился |
| Автор: Alix 7.4.2009, 11:47 | ||
Может и неприятно, но всякие можно бы и в пробелы превратить и т.д. по аналогии. |
| Автор: PumaSport 14.8.2011, 19:27 |
| а можете скинуть пример? |