Форум: "Основная";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];
ВнизСпецсимволы HTML Найти похожие ветки
← →
Tatarin (2009-03-12 23:47) [0]Здравствуйте. Возникла такая задача, с сайта скачивается страница, затем из нее вырезаются некоторые данные. Все это проходит на ура, но. Среди текста встречаются специальные символы, вроде & чтобы их заменить написал такую простую функцию
function HTMLtoANSI(str: string): string;
procedure REP(old, new: string);
begin
str:= StringReplace(str, old, new, [rfReplaceAll, rfIgnoreCase]);
end;
begin
REP("&" , "&");
REP(""" , """);
REP("<" , "<");
REP(">" , ">");
REP("¤" , "¤");
REP("¦" , "¦");
REP("§" , "§");
REP("©" , "©");
REP("ª" , "ª");
REP("«" , "«");
REP("»" , "»");
REP("®" , "®");
REP("°" , "°");
REP("±" , "±");
REP("µ" , "µ");
REP("¶" , "¶");
REP("·" , "·");
REP("¹" , "¹");
REP("€" , "?");
REP("™" , "™");
REP("†" , "†");
Result:= str;
end;
Не гениальна, но с задачей пока справляется. Но кроме них с тексте редко, но все же выскакивают символы вроде '. Писать подобное моей функции для них будет совсем убогим занятием, подскажите, как выйти из ситуации.
ps. сайт не мой, почему так - не знаю.
← →
Tatarin (2009-03-12 23:49) [1]Форум скушал мои символы. На том сайте символ " представлен в виде & # 39 ; без пробелов. При этом, там так может быть представлен практически любой символ. Встречал даже букву "Ж" в такой кодировке.
← →
sniknik © (2009-03-13 21:31) [2]> Встречал даже букву "Ж" в такой кодировке.
насколько позволяют скудные знания по html и яваскрипту (читал книжку недавно), получаются они так
(если форум прпустит...)<?xml version="1.0" encoding="cp1251"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>chars</title>
<meta http-equiv="content-type" content="text/html; charset=cp1251" />
<script language="JavaScript" type="text/javascript">
/*<![CDATA[*/
function load() {
var st = "";
for(var i=0; i<=255; i++){ //старые привычки, хотя для юникода неактуально
st = st + "&#"+i+" - &#"+i+" <br/>"
}
var i = "Ж".charCodeAt(0);
st = st + "&#"+i+" - &#"+i+" <br/>"
document.getElementById("chars").innerHTML = st;
}
/*]]>*/
</script>
</head>
<body onload="load()">
<div id="chars"></div>
</body>
</html>
кстати учти, что при другой кодовой странице символы будут совсем другие...
← →
sniknik © (2009-03-13 21:35) [3]смотри ка прошло...
скопируй в текстовый документ переименуй документ в *.html ... думаю понятно. поймешь принцип формирования, поймешь и как разбирать...
← →
sniknik © (2009-03-13 21:41) [4]> смотри ка прошло...
хотя и не все :(
вот эти строчкиst = st + "&#"+i+" - &#"+i+" <br/>"
нужно так (убери пробелы)st = st + "& a m p # "+i+" - & #"+i+" <br/>"
← →
Tatarin (2009-03-14 02:35) [5]Спасибо. Примерно такой метод я и сам хотел использовать. Здесь, конечно, более оптимально, чем у меня.
Хотя, и здесь я думаю производительность будет не очень высока, ведь я могу обрабатывать только "строчки", которых на каждой странице около 2 тысяч.
Немного поразмыслив, решил, что прежде чем заменять, стоит просто проверить, есть ли комбинация &# в моей строке(они встречаются не так часто). Думаю, это мне поможет, спасибо.
← →
sniknik © (2009-03-14 04:47) [6]> Хотя, и здесь я думаю производительность будет не очень высока,
при чем здесь "производительность здесь"? это пример показывающий "сборку" чтобы понять как "разбирать", понять что это всего лишь код символа в текущей для странице кодировке...
← →
Плохиш © (2009-03-16 13:17) [7]
> Tatarin (12.03.09 23:47)
>
>
Почему бы не использовать интерфейс IHTMLDocument2
http://www.swissdelphicenter.ch/de/showcode.php?id=2352
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c