Форум: "Прочее";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизФункция замены специальных HTML символов Найти похожие ветки
← →
0leg © (2007-03-28 15:44) [0]Может есть у кого такая для Delphi?? И для обратного преобразования??
← →
homm © (2007-03-28 15:50) [1]> Функция замены специальных HTML символов
А какие там сиволы нужно заменять кроме «<» и «>» ??
← →
Чапаев © (2007-03-28 16:06) [2]> [1] homm © (28.03.07 15:50)
Амперсанд и кавычки, как минимум.
← →
homm © (2007-03-28 16:16) [3]кавычки зачем?
← →
0leg © (2007-03-28 16:21) [4]
> А какие там сиволы нужно заменять кроме «<» и «>» ??
Специальных символов очень много, самые распространенные - & < > " "
Но есть еще куча (копирайт, параграф и т.д.). В php есть ф-яhtmlentities
- она делает все эти замены. Мне бы такую же для Дельфи...
← →
homm © (2007-03-28 16:25) [5]Аперсанд, больше менше — я согласен. Объясни мне, кавычки зачем?
Все остальные символы вполне корректно отображаются браузерами.
> В php есть ф-я htmlentities - она делает все эти замены
htmlspecialchars, если уж на о пошло. Не знаю для чего можно превую применить.
← →
TRUNK © (2007-03-28 16:25) [6]> homm © (28.03.07 16:16) [3]
> кавычки зачем?
Вот цитата с www.w3.org:
Four character entity references deserve special mention since they are frequently used to escape special characters:
"<" represents the < sign.
">" represents the > sign.
"&" represents the & sign.
"" represents the " mark.
Authors wishing to put the "<" character in text should use "<" (ASCII decimal 60) to avoid possible confusion with the beginning of a tag (start tag open delimiter). Similarly, authors should use ">" (ASCII decimal 62) in text instead of ">" to avoid problems with older user agents that incorrectly perceive this as the end of a tag (tag close delimiter) when it appears in quoted attribute values.
Authors should use "&" (ASCII decimal 38) instead of "&" to avoid confusion with the beginning of a character reference (entity reference open delimiter). Authors should also use "&" in attribute values since character references are allowed within CDATA attribute values.
Some authors use the character entity reference """ to encode instances of the double quote mark (") since that character may be used to delimit attribute values.
← →
0leg © (2007-03-28 16:29) [7]У меня задача - хранить в XML-файле текст, введенный пользователем (содержимое из объектов типа TStrings).
Если кто этим занимался - посоветуйте, имеет смысл заменять все html-
сущности или можно обойтись стандартным набором (амперсанд, угловые скобки, кавычки) ?
Проблем с отображением в разных браузерах не возникнет?
← →
homm © (2007-03-28 16:30) [8]> TRUNK © (28.03.07 16:25)
Вроде не говоритс язачем, просто говорится что нужно. Правда не вижу, как кавычки могут навредить.
← →
TRUNK © (2007-03-28 16:43) [9]> TRUNK © (28.03.07 16:25) [6]
Блин. Когда копировал текст, забыл об этом самом преобразовании :)
А кавычки имеет смысл заменять, если они присутствуют в текстовых параметрах внутри тегов. Ну а чтобы не думать о том, внутри тега кавычка или снаружи, проще заменять их везде, я так думаю.
← →
homm © (2007-03-28 16:52) [10]> А кавычки имеет смысл заменять, если они присутствуют в
> текстовых параметрах внутри тегов.
Вот ключевое слово. Какие могут быть теги, если больше/меньше экранированы??? И почему тогда «"» не нужно экранировать, внутри из тоже можно помещать параметры.
← →
Reindeer Moss Eater © (2007-03-28 17:20) [11]Функция замены специальных HTML символов
Замена символов (любых, не только специальных) производится процедурами Delete, Insert, или операцией присвоения, когда со строкой работают как с массивом символов.
← →
Чапаев © (2007-03-28 17:29) [12]> [3] homm © (28.03.07 16:16)
По стандарту.
← →
homm © (2007-03-28 17:55) [13]> Замена символов (любых, не только специальных) производится
> процедурами Delete, Insert
Кстати в топку такой способ замены. Лучше строить паралельно новую строку, последовательно читая байты старой.
← →
Reindeer Moss Eater © (2007-03-28 19:11) [14]Кстати в топку такой способ замены. Лучше строить паралельно новую строку, последовательно читая байты старой.
Это способ замены символов?
← →
TRUNK © (2007-03-28 19:22) [15]> [10] homm © (28.03.07 16:52)
> Какие могут быть теги, если больше/меньше экранированы??
Чем это они экранированы ?
Я вообще-то говорил о параметре в виде строки. Если строка эта содержит, допустим, пробелы, то её надо заключить в кавычки. А если у нас сама эта строка содержит в себе кавычки, и если их не преобразовать, то они послужат символом ложного окончания параметра. Надеюсь, теперь понятно, что я имел ввиду?
> И почему тогда «"» не нужно экранировать, внутри из тоже
> можно помещать параметры
Ну, насчёт апострофа в спецификации ничего не сказано.
← →
homm © (2007-03-28 22:08) [16]> Это способ замены символов?
да, если нужно заменить более одного символа на последовательность симоволов больше одного, как в нашем случае.
> Чем это они экранированы ?
Нами-же, сиволами «&lt;» «&gt;»
> Я вообще-то говорил о параметре в виде строки.
Поздравляю, все остальные вообще-то о сабже.
> Если строка эта содержит, допустим, пробелы, то её надо
> заключить в кавычки.
Какая строка? Выдыхай скорее.
> Надеюсь, теперь понятно, что я имел ввиду?
Что твоя трава неплохово качества? :)
> Ну, насчёт апострофа в спецификации ничего не сказано.
/*глубокий затяг*/ Почему тогда твоя строка не может заключатся в опострафы? /*Ф-ф-фф*/ :)
← →
Style © (2007-03-29 10:41) [17]не судьба написать пару функций для преобразования HTML_ENTITY?
type
THTML_ENTITY = record
vName: TLongStr;
vChar: char;
end;
const
HTML_ENTITIES: array [1..102] of THTML_ENTITY = (
( vName: " " ; vChar: #32 )
, ( vName: "¡" ; vChar: #161 )
, ( vName: "¢" ; vChar: #162 )
, ( vName: "£" ; vChar: #163 )
, ( vName: "¤" ; vChar: #164 )
, ( vName: "¥" ; vChar: #165 )
, ( vName: "¦" ; vChar: #166 )
, ( vName: "§" ; vChar: #167 )
, ( vName: "¨" ; vChar: #168 )
, ( vName: "©" ; vChar: #169 )
, ( vName: "ª" ; vChar: #170 )
, ( vName: "«" ; vChar: #171 )
, ( vName: "¬" ; vChar: #172 )
, ( vName: "" ; vChar: #173 )
, ( vName: "®" ; vChar: #174 )
, ( vName: "¯" ; vChar: #175 )
, ( vName: "°" ; vChar: #176 )
, ( vName: "±" ; vChar: #177 )
, ( vName: "²" ; vChar: #178 )
, ( vName: "³" ; vChar: #179 )
, ( vName: "´" ; vChar: #180 )
, ( vName: "µ" ; vChar: #181 )
, ( vName: "¶" ; vChar: #182 )
, ( vName: "·" ; vChar: #183 )
, ( vName: "¸" ; vChar: #184 )
, ( vName: "¹" ; vChar: #185 )
, ( vName: "º" ; vChar: #186 )
, ( vName: "»" ; vChar: #187 )
, ( vName: "¼" ; vChar: #188 )
, ( vName: "½" ; vChar: #189 )
, ( vName: "¾" ; vChar: #190 )
, ( vName: "¿" ; vChar: #191 )
, ( vName: "À" ; vChar: #192 )
, ( vName: "Á" ; vChar: #193 )
, ( vName: "Â" ; vChar: #194 )
, ( vName: "Ã" ; vChar: #195 )
, ( vName: "Ä" ; vChar: #196 )
, ( vName: "Å" ; vChar: #197 )
, ( vName: "Æ" ; vChar: #198 )
, ( vName: "Ç" ; vChar: #199 )
, ( vName: "È" ; vChar: #200 )
, ( vName: "É" ; vChar: #201 )
, ( vName: "Ê" ; vChar: #202 )
, ( vName: "Ë" ; vChar: #203 )
, ( vName: "Ì" ; vChar: #204 )
, ( vName: "Í" ; vChar: #205 )
, ( vName: "Î" ; vChar: #206 )
, ( vName: "Ï" ; vChar: #207 )
, ( vName: "Ð" ; vChar: #208 )
, ( vName: "Đ" ; vChar: #208 ) // для HelpMaker
, ( vName: "Ñ" ; vChar: #209 )
, ( vName: "Ò" ; vChar: #210 )
, ( vName: "Ó" ; vChar: #211 )
, ( vName: "Ô" ; vChar: #212 )
, ( vName: "Õ" ; vChar: #213 )
, ( vName: "Ö" ; vChar: #214 )
, ( vName: "×" ; vChar: #215 )
, ( vName: "Ø" ; vChar: #216 )
, ( vName: "Ù" ; vChar: #217 )
, ( vName: "Ú" ; vChar: #218 )
, ( vName: "Û" ; vChar: #219 )
, ( vName: "Ü" ; vChar: #220 )
, ( vName: "Ý" ; vChar: #221 )
, ( vName: "Þ" ; vChar: #222 )
, ( vName: "ß" ; vChar: #223 )
, ( vName: "à" ; vChar: #224 )
, ( vName: "á" ; vChar: #225 )
, ( vName: "â" ; vChar: #226 )
, ( vName: "ã" ; vChar: #227 )
, ( vName: "ä" ; vChar: #228 )
, ( vName: "å" ; vChar: #229 )
, ( vName: "æ" ; vChar: #230 )
, ( vName: "ç" ; vChar: #231 )
, ( vName: "è" ; vChar: #232 )
, ( vName: "é" ; vChar: #233 )
, ( vName: "ê" ; vChar: #234 )
, ( vName: "ë" ; vChar: #235 )
, ( vName: "ì" ; vChar: #236 )
, ( vName: "í" ; vChar: #237 )
, ( vName: "î" ; vChar: #238 )
, ( vName: "ï" ; vChar: #239 )
, ( vName: "ð" ; vChar: #240 )
, ( vName: "ñ" ; vChar: #241 )
, ( vName: "ò" ; vChar: #242 )
, ( vName: "ó" ; vChar: #243 )
, ( vName: "ô" ; vChar: #244 )
, ( vName: "õ" ; vChar: #245 )
, ( vName: "ö" ; vChar: #246 )
, ( vName: "÷" ; vChar: #247 )
, ( vName: "ø" ; vChar: #248 )
, ( vName: "ù" ; vChar: #249 )
, ( vName: "ú" ; vChar: #250 )
, ( vName: "û" ; vChar: #251 )
, ( vName: "ü" ; vChar: #252 )
, ( vName: "ý" ; vChar: #253 )
, ( vName: "þ" ; vChar: #254 )
, ( vName: "ÿ" ; vChar: #255 )
, ( vName: """ ; vChar: #34 )
, ( vName: "<" ; vChar: #60 )
, ( vName: ">" ; vChar: #62 )
, ( vName: "&" ; vChar: #38 )
, ( vName: "'" ; vChar: #39 )
);
← →
Style © (2007-03-29 10:43) [18]косяк :)
const
HTML_ENTITIES: array [1..102] of THTML_ENTITY = (
( vName: " " ; vChar: #32 )
, ( vName: "¡" ; vChar: #161 )
, ( vName: "¢" ; vChar: #162 )
, ( vName: "£" ; vChar: #163 )
, ( vName: "¤" ; vChar: #164 )
, ( vName: "¥" ; vChar: #165 )
, ( vName: "¦" ; vChar: #166 )
, ( vName: "§" ; vChar: #167 )
, ( vName: "¨" ; vChar: #168 )
, ( vName: "©" ; vChar: #169 )
, ( vName: "ª" ; vChar: #170 )
, ( vName: "«" ; vChar: #171 )
, ( vName: "¬" ; vChar: #172 )
, ( vName: "­" ; vChar: #173 )
, ( vName: "®" ; vChar: #174 )
, ( vName: "¯" ; vChar: #175 )
, ( vName: "°" ; vChar: #176 )
, ( vName: "±" ; vChar: #177 )
, ( vName: "²" ; vChar: #178 )
, ( vName: "³" ; vChar: #179 )
, ( vName: "´" ; vChar: #180 )
, ( vName: "µ" ; vChar: #181 )
, ( vName: "¶" ; vChar: #182 )
, ( vName: "·" ; vChar: #183 )
, ( vName: "¸" ; vChar: #184 )
, ( vName: "¹" ; vChar: #185 )
, ( vName: "º" ; vChar: #186 )
, ( vName: "»" ; vChar: #187 )
, ( vName: "¼" ; vChar: #188 )
, ( vName: "½" ; vChar: #189 )
, ( vName: "¾" ; vChar: #190 )
, ( vName: "¿" ; vChar: #191 )
, ( vName: "À" ; vChar: #192 )
, ( vName: "Á" ; vChar: #193 )
, ( vName: "Â" ; vChar: #194 )
, ( vName: "Ã" ; vChar: #195 )
, ( vName: "Ä" ; vChar: #196 )
, ( vName: "Å" ; vChar: #197 )
, ( vName: "Æ" ; vChar: #198 )
, ( vName: "Ç" ; vChar: #199 )
, ( vName: "È" ; vChar: #200 )
, ( vName: "É" ; vChar: #201 )
, ( vName: "Ê" ; vChar: #202 )
, ( vName: "Ë" ; vChar: #203 )
, ( vName: "Ì" ; vChar: #204 )
, ( vName: "Í" ; vChar: #205 )
, ( vName: "Î" ; vChar: #206 )
, ( vName: "Ï" ; vChar: #207 )
, ( vName: "Ð" ; vChar: #208 )
, ( vName: "Đ" ; vChar: #208 ) // для HelpMaker
, ( vName: "Ñ" ; vChar: #209 )
, ( vName: "Ò" ; vChar: #210 )
, ( vName: "Ó" ; vChar: #211 )
, ( vName: "Ô" ; vChar: #212 )
, ( vName: "Õ" ; vChar: #213 )
, ( vName: "Ö" ; vChar: #214 )
, ( vName: "×" ; vChar: #215 )
, ( vName: "Ø" ; vChar: #216 )
, ( vName: "Ù" ; vChar: #217 )
, ( vName: "Ú" ; vChar: #218 )
, ( vName: "Û" ; vChar: #219 )
, ( vName: "Ü" ; vChar: #220 )
, ( vName: "Ý" ; vChar: #221 )
, ( vName: "Þ" ; vChar: #222 )
, ( vName: "ß" ; vChar: #223 )
, ( vName: "à" ; vChar: #224 )
, ( vName: "á" ; vChar: #225 )
, ( vName: "â" ; vChar: #226 )
, ( vName: "ã" ; vChar: #227 )
, ( vName: "ä" ; vChar: #228 )
, ( vName: "å" ; vChar: #229 )
, ( vName: "æ" ; vChar: #230 )
, ( vName: "ç" ; vChar: #231 )
, ( vName: "è" ; vChar: #232 )
, ( vName: "é" ; vChar: #233 )
, ( vName: "ê" ; vChar: #234 )
, ( vName: "ë" ; vChar: #235 )
, ( vName: "ì" ; vChar: #236 )
, ( vName: "í" ; vChar: #237 )
, ( vName: "î" ; vChar: #238 )
, ( vName: "ï" ; vChar: #239 )
, ( vName: "ð" ; vChar: #240 )
, ( vName: "ñ" ; vChar: #241 )
, ( vName: "ò" ; vChar: #242 )
, ( vName: "ó" ; vChar: #243 )
, ( vName: "ô" ; vChar: #244 )
, ( vName: "õ" ; vChar: #245 )
, ( vName: "ö" ; vChar: #246 )
, ( vName: "÷" ; vChar: #247 )
, ( vName: "ø" ; vChar: #248 )
, ( vName: "ù" ; vChar: #249 )
, ( vName: "ú" ; vChar: #250 )
, ( vName: "û" ; vChar: #251 )
, ( vName: "ü" ; vChar: #252 )
, ( vName: "ý" ; vChar: #253 )
, ( vName: "þ" ; vChar: #254 )
, ( vName: "ÿ" ; vChar: #255 )
, ( vName: """ ; vChar: #34 )
, ( vName: "<" ; vChar: #60 )
, ( vName: ">" ; vChar: #62 )
, ( vName: "&" ; vChar: #38 )
, ( vName: "'" ; vChar: #39 )
);
← →
palva © (2007-03-29 23:46) [19]
> 0leg © (28.03.07 16:29) [7]
> У меня задача - хранить в XML-файле текст, введенный пользователем
> (содержимое из объектов типа TStrings).
> Если кто этим занимался - посоветуйте, имеет смысл заменять
> все html-
> сущности или можно обойтись стандартным набором (амперсанд,
> угловые скобки, кавычки) ?
>
> Проблем с отображением в разных браузерах не возникнет?
1. Вот здесь перечислено, какие символы надо заменять в XML файлах.
http://www.w3.org/TR/2000/REC-xml-20001006#syntax
символы & < нужно заменять обязательно, еще три символа > " " лучше тоже заменять, но там сказано, когда такая замена на самом деле необходима.
2. Если браузер старый или плохой и плохо поддерживает XML, то проблемы могут быть в любом случае.
← →
Другой © (2007-03-30 00:06) [20]0leg © (28.03.07 16:29) [7]
У меня задача - хранить в XML-файле текст, введенный пользователем (содержимое из объектов типа TStrings).
Достаточно такого:s:=StringReplace(s,"&","&",[rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s,"<","<",[rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s,">",">",[rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s,""",""",[rfReplaceAll, rfIgnoreCase]);
result:=s;
ну и обратно.
← →
Другой © (2007-03-30 00:08) [21]
s:=StringReplace(s,"&","&_amp;",[rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s,"<","&_lt;",[rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s,">","&_gt;",[rfReplaceAll, rfIgnoreCase]);
s:=StringReplace(s,""","&_quot;",[rfReplaceAll, rfIgnoreCase]);
result:=s;
&_amp; &_lt; &_gt; &_quot; - подчеркивание убрать
← →
homm © (2007-03-30 00:11) [22]> &_amp; &_lt; &_gt; &_quot; - подчеркивание убрать
Так что-ли? :)
&amp; &lt; &gt; &quot;
← →
Другой © (2007-03-30 00:12) [23]homm © (30.03.07 00:11) [22]
:) Да!
← →
Style © (2007-03-30 08:55) [24]& - проверка :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.072 c