Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизКак из html строки взять текст без тегов??? Найти похожие ветки
← →
Луарвик (2005-03-06 01:58) [0]Пример: строка "<p><strong><font color="#FF0000" face="fuckinfont">Твикаем XP</font></strong></p>"
А нужно получить лишь "Твикаем XP"
← →
SergP © (2005-03-06 02:11) [1]Типа так:
while pos("<",s)>0 do
delete(s,pos("<",s),pos(">",s)-pos("<",s)+1);
Смысл думаю понятен, а что касается всяких непредвиденных обстоятельств (типа всяких приколов с тегами) думаю что сам справишься...
← →
Луарвик (2005-03-06 02:23) [2]Благодарю.
Все таки есть еще на форуме Программеры...
← →
GanibalLector © (2005-03-06 02:24) [3]См.темы "Конечные автоматы и регулярные выражения".
В Бакнелле этой теме посвящено порядка 80 страниц.Занятное чтиво ;)
← →
vertal © (2005-03-06 02:24) [4]Здесь надо осторожнее. Если заранее известно, что в этом HTML нет скриптов, комментариев, таблиц стилей, в строках- закавыченных значениях атрибутов тегов нет символов "<" и ">" , то можно и через Pos. А если программа должна корректно обрабатывать корректный HTML - код произвольной структуры, то нужно пропускать, то есть не реагировать на эти скобки, внутри этих элементов. Например, вот код, который ищет конец тега
const
Quotes :Set Of Char = ["""","""];
...
while (Result <> nil) and not (Result^ in [ #0, ">"]) do
begin
while not (Result^ in (Quotes + [">",#0])) do Inc(Result);
if Result^ in Quotes then
Result := StrScan(Result + 1, Result^);
if (Result <> nil) and (Result^ <> ">") then inc(Result);
end;
При начале выполнения этого фрагмента Result типа PChar указывает на символ, следующий за именем тега. После его выполнения Result указывает на завершающий определение тега символ ">", или Result = nil или Result^ = #0 , если завершение определения тега было не найдено.
← →
Луарвик (2005-03-06 02:28) [5]Пасибо, но я говорил именно про строки. Короткие, не несущие в себе таблиц и прочих структур...
← →
vertal © (2005-03-06 02:48) [6]Кстати, в HTML целый документ спокойно может быть записан в одну строку, на его отображение это не повлияет, некоторые оптимизаторы могут так над ним извращаться. Но дело конечно ваше. И еще - если строка большая, то вместо delete быстрее использовать копирование того, что остается от строки после вырезания тегов, в новый буфер, через StrLCopy или Move.
← →
Луарвик (2005-03-06 13:33) [7]ОК!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.088 c