Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.07;
Скачать: CL | DM;

Вниз

Спецсимволы 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("&curren;" ,    "¤");
 REP("&brvbar;" ,    "¦");
 REP("&sect;"   ,    "§");
 REP("©"   ,    "©");
 REP("&ordf;"   ,    "&#170;");
 REP("&laquo;"  ,    "«");
 REP("&raquo;"  ,    "»");
 REP("&reg;"    ,    "®");
 REP("&deg;"    ,    "°");
 REP("&plusmn;" ,    "±");
 REP("&micro;"  ,    "µ");
 REP("&para;"   ,    "¶");
 REP("&middot;" ,    "·");
 REP("&sup1;"   ,    "&#185;");
 REP("&euro;"   ,    "€");
 REP("&trade;"  ,    "™");
 REP("&dagger;" ,    "†");

 Result:= str;
end;


Не гениальна, но с задачей пока справляется. Но кроме них с тексте редко, но все же выскакивают символы вроде &#39;. Писать подобное моей функции для них будет совсем убогим занятием, подскажите, как выйти из ситуации.

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 + "&amp#"+i+" - &#"+i+" <br/>"
   }
   var i = "Ж".charCodeAt(0);
   st = st + "&amp#"+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 + "&amp#"+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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1260364091
abhtr
2009-12-09 16:08
2010.02.07
Помогите перевести str1 := =?UTF-8?B?0JrQsNC6INC/0L7QsdC...


15-1259997701
begin_flasher
2009-12-05 10:21
2010.02.07
Shockwave Flash


15-1260016346
AlexDan
2009-12-05 15:32
2010.02.07
реестр в w7


15-1259910918
tesseract
2009-12-04 10:15
2010.02.07
Тяпница в бочке


8-1202728924
Vayrus
2008-02-11 14:22
2010.02.07
SWF2Exe