Есть ли в винде ф-я для удаления тегов, чтобы остался только текст, которым мы видим в браузере непосредственно. Мне сказали в COM объектах есть такой метод, но конечно хотелось бы API, т.к. нужна скорость. Или написать свою процедуру?
да, но подводных камней много. Писать надо дня 3. А я не могу уделить столько времени, т.к. его обычно не хватает. например надо учитывать такие строки, т.е. ошибки тех кто писал страницу <b class=sdsds><ssdsdsd<//b>
Алгоритм очень прост. Ищем "<" потои ищем после нее ]" и все что между ними удаляем, если до закрывающей кавычки стоит еще одна открывающая, то пропускаем ее и ищем дальше. Твой пример будет корректно обработан, так что ничего тут 3 дня писать не нужно.
Ms Rem Вот пример где твой алгоритм не сработает. Будет потерян важный текст, к тому же мне надо заменять nbsp; на пробелы и т.д., потому буду копать либо в COM либо возьму сорцы php, иначе себе не представляю как реализовать в краткие сроки Код (Text): <body><111 Важный текст> sdfsd<qqq></body>
есть текстовые броузеры которые умеют это делать (links, links2, lynx). типа `links -dump file.html`. Это конечно не API, но возможно адекватнее сорцов php.
А кто мешает выдерать по именам тегов?? и пример [<body><111 Важный текст> sdfsd<qqq></body>] корректно обработается т.к. нет в html тега <qqq>. Соот-но алгоритм дополнится так: 1) Ищем "<" потом ищем ]" Далее в этой подстрочке пытаемся найти имя тега, отбрасывая начальные пробелы... 2) Если тег найден, то вырезаем, если нет то оставляем...
SnugForce - Нет, я так понял Corleone нужна корректная реализация. Все равно всплывает много проблем, а что если например страница имеет скрипты, которые выводят текст. Лучше было бы использовать компоненты IE. Как именно сделать я не знаю. Но идея в аналогии действий [ctrl+a -> copy] уже отображенной корреектно страницы в IE. Но даже если это удастся все равно могут быть проблемы, например кривые настройки ослика или что ещё плохого с ним на компе пользователя. Тут идеального решения задачи не найти. Кстате вопрос имеет актуальность давно, на многих форумах можно найти подобные топики.
execoma Совершенно верно. Нужно 100% корректное решение, без вылетов, и максимально точно парсяшее код. Выход пока вижу только в подключении к ком объекту.
В общем буду делать как тут сказано http://72.14.203.104/search?q=cache:pL_NRSi9JzcJ:www.relib.com/article s/article.asp%3Fid%3D148+Microsoft+HTML+parser&hl=ru&ct=clnk&cd=4&client=opera http://www.codeguru.com/vb/vb_internet/html/article.php/c4815/ Если у кого есть другие универсалиные и рабочие идеи, пишите, а так считаю тему закрытой
Да опять же! эта процедура загнется на некорректных тегах, про document.write('hello'); вообще молчу. Короче выход нашел в осле. Тему думаю стоит закрыть
Corleone У тебя просто изначально неправильный вопрос. Тебе нужно удалить теги и важны скорость? Тебе подсказывают парсеры. Нужно качество и фичи, типа обработки скриптов? Тогда это уже не "удаление тегов", а конвертирование html в текст. Тогда нужно смотреть в сторону использование рендеров html (IE, Mozilla).