Тема: AHK: Конвертация текста
Какой командой можно конвертировать текст из первого во второй?
<a i=0>por</a> <a i=1>Thierry Meyssan
%3Ca%20i%3D0%3Epor%20%3C%2Fa%3E%3Ca%20i%3D1%3EThierry%20Meyssan
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Какой командой можно конвертировать текст из первого во второй?
<a i=0>por</a> <a i=1>Thierry Meyssan
%3Ca%20i%3D0%3Epor%20%3C%2Fa%3E%3Ca%20i%3D1%3EThierry%20Meyssan
Ищите UriEncode().
Malcev
Спасибо. Знал, что у teadrinker`a в скрипте это использовалось, но забыл название). По какой причине скрипт кодирует не полностью — пропускает угловые скобки?
str =
(
<a i=0>por</a> <a i=1>Thierry Meyssan
)
MsgBox % UriEncode(str)
;-------------------------------------------------
; HTML encode/decode
;------------------------------------------------
UriEncode(str)
{ ; v 0.3 / (w) 24.06.2008 by derRaphael / zLib-Style release
b_Format := A_FormatInteger
data := ""
SetFormat,Integer,H
Loop,Parse,str
if ((Asc(A_LoopField)>0x7f) || (Asc(A_LoopField)<0x30) || (asc(A_LoopField)=0x3d))
data .= "%" . ((StrLen(c:=SubStr(ASC(A_LoopField),3))<2) ? "0" . c : c)
Else
data .= A_LoopField
SetFormat,Integer,%b_format%
return data
}
UriDecode(str)
{ ; v 0.1 / (w) 28.06.2008 by derRaphael / zLib-Style release
Loop,Parse,str,`%
txt := (A_Index=1) ? A_LoopField : txt chr("0x" substr(A_LoopField,1,2)) SubStr(A_LoopField,3)
return txt
}
UnSlashUnicode(s)
{
; unslash unicode sequences like \u0026
; by Mikhail Kuropyatnikov 2009 (micdelt@mail.ru)
rx = \\u([0-9a-fA-F]{4})
pos = 0
loop
{
pos := RegExMatch(s,rx,m,pos+1)
if (pos = 0)
break
StringReplace, s, s, %m%, % Chr("0x" . SubStr(m,3,4))
}
return s
}
ypppu
Действительно, это не команда).
Можно так ещё:
str =
(
<a i=0>por</a> <a i=1>Thierry Meyssan
)
MsgBox % UriEncode(str)
URIEncode(str) {
static flags := ( URL_ESCAPE_PERCENT := 0x01000 )
| ( URL_ESCAPE_SEGMENT_ONLY := 0x02000 )
| ( URL_ESCAPE_AS_UTF8 := 0x40000 )
size := StrLen(str)*2
Loop 2
VarSetCapacity(buff, (size + 1) << !!A_IsUnicode)
until DllCall("Shlwapi\UrlEscape", "Str", str, "Str", buff, "UIntP", size, "UInt", flags) = 0
Return StrReplace(buff, "+", "%2B")
}
Если каки-то символы не будет кодировать, можно ещё StrReplace добавить.
Или так:
str =
(
<a i=0>por</a> <a i=1>Thierry Meyssan
)
MsgBox, % EncodeDecodeURI(str)
EncodeDecodeURI(str, encode := true, component := true) {
for k, v in [["\", "\\"], ["'", "\'"], ["`r", "\r"], ["`n", "\n"]]
str := StrReplace(str, v[1], v[2])
Return GetJS().( (encode ? "en" : "de") . "codeURI" . (component ? "Component" : "") . "('" . str . "')" )
}
GetJS() {
static doc := ComObjCreate("htmlfile")
, _ := doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
, JS := ObjBindMethod(doc.parentWindow, "eval")
Return JS
}
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться