Yeah... you're right avout the ASCII codes there Richard. But I think in webpages, it's a static table? Ie; the one below? This would also make sure any local OS language gets the codes right?

Right now though.. now why doesn't this work? [Frown] ASCAN() always returns -1. the IF NOT case still kicks in too [Confused]

code:
FUNCTION HTMLtoText($string)
;| Exit if there's nothing to convert
IF INSTR($string, "&") = 0 OR INSTR($string, ";") = 0
EXIT 2
ENDIF

DIM $Codes[157]
$Codes[0] = CHR(9) + "&&" + "	"
$Codes[1] = CHR(10) + "&&" + "
"
$Codes[2] = CHR(13) + "&&" + "
"
$Codes[3] = " " + "&&" + " "
$Codes[4] = "!" + "&&" + "!"
$Codes[5] = CHR(34) + "&&" + """ + "&&" + """
$Codes[6] = "#" + "&&" + "#"
$Codes[7] = CHR(36) + "&&" + "$"
$Codes[8] = "%" + "&&" + "%"
$Codes[9] = "&" + "&&" + "&" + "&&" + "&"
$Codes[10] = CHR(39) + "&&" + "'"
$Codes[11] = "(" + "&&" + "("
$Codes[12] = ")" + "&&" + ")"
$Codes[13] = "*" + "&&" + "*"
$Codes[14] = "+" + "&&" + "+"
$Codes[15] = "," + "&&" + ","
$Codes[16] = "-" + "&&" + "-"
$Codes[17] = "." + "&&" + "."
$Codes[18] = "/" + "&&" + "/"
$Codes[19] = ":" + "&&" + ":"
$Codes[20] = ";" + "&&" + "&#59;"
$Codes[21] = "<" + "&&" + "&#60;" + "&&" + "&lt;"
$Codes[22] = "=" + "&&" + "&#61;"
$Codes[23] = ">" + "&&" + "&#62;" + "&&" + "&gt;"
$Codes[24] = "?" + "&&" + "&#63;"
$Codes[25] = "@" + "&&" + "&#64;"
$Codes[26] = "[" + "&&" + "&#91;"
$Codes[27] = "\" + "&&" + "&#92;"
$Codes[28] = "]" + "&&" + "&#93;"
$Codes[29] = "^" + "&&" + "&#94;"
$Codes[30] = "_" + "&&" + "&#95;"
$Codes[31] = "`" + "&&" + "&#96;"
$Codes[32] = "{" + "&&" + "&#123;"
$Codes[33] = "|" + "&&" + "&#124;"
$Codes[34] = "}" + "&&" + "&#125;"
$Codes[35] = "~" + "&&" + "&#126;"
$Codes[36] = "‚" + "&&" + "&#130;"
$Codes[37] = "ƒ" + "&&" + "&#131;"
$Codes[38] = "„" + "&&" + "&#132;"
$Codes[39] = "…" + "&&" + "&#133;"
$Codes[40] = "†" + "&&" + "&#134;"
$Codes[41] = "‡" + "&&" + "&#135;"
$Codes[42] = "ˆ" + "&&" + "&#136;"
$Codes[43] = "‰" + "&&" + "&#137;"
$Codes[44] = "Š" + "&&" + "&#138;"
$Codes[45] = "‹" + "&&" + "&#139;"
$Codes[46] = "Œ" + "&&" + "&#140;"
$Codes[47] = "‘" + "&&" + "&#145;"
$Codes[48] = "’" + "&&" + "&#146;"
$Codes[49] = "“" + "&&" + "&#147;"
$Codes[50] = "”" + "&&" + "&#148;"
$Codes[51] = "•" + "&&" + "&#149;"
$Codes[52] = "–" + "&&" + "&#150;"
$Codes[53] = "—" + "&&" + "&#151;"
$Codes[54] = "˜" + "&&" + "&#152;"
$Codes[55] = "™" + "&&" + "&#153;" + "&&" + "&trade;"
$Codes[56] = "š" + "&&" + "&#154;"
$Codes[57] = "›" + "&&" + "&#155;"
$Codes[58] = "œ" + "&&" + "&#156;"
$Codes[59] = "Ÿ" + "&&" + "&#159;"
$Codes[60] = " " + "&&" + "&#160;" + "&&" + "&nbsp;"
$Codes[61] = "¡" + "&&" + "&#161;" + "&&" + "&iexcl;"
$Codes[62] = "¢" + "&&" + "&#162;" + "&&" + "&cent;"
$Codes[63] = "£" + "&&" + "&#163;" + "&&" + "&pound;"
$Codes[64] = "¤" + "&&" + "&#164;" + "&&" + "&curren;"
$Codes[65] = "¥" + "&&" + "&#165;" + "&&" + "&yen;"
$Codes[66] = "¦" + "&&" + "&#166;" + "&&" + "&brvbar;"
$Codes[67] = "§" + "&&" + "&#167;" + "&&" + "&sect;"
$Codes[68] = "¨" + "&&" + "&#168;" + "&&" + "&uml;"
$Codes[69] = "©" + "&&" + "&#169;" + "&&" + "&copy;"
$Codes[70] = "ª" + "&&" + "&#170;" + "&&" + "&ordf;"
$Codes[71] = "«" + "&&" + "&#171;" + "&&" + "&laquo;"
$Codes[72] = "¬" + "&&" + "&#172;" + "&&" + "&not;"
$Codes[73] = "­" + "&&" + "&#173;" + "&&" + "&shy;"
$Codes[74] = "®" + "&&" + "&#174;" + "&&" + "&reg;"
$Codes[75] = "¯" + "&&" + "&#175;" + "&&" + "&macr;"
$Codes[76] = "°" + "&&" + "&#176;" + "&&" + "&deg;"
$Codes[77] = "±" + "&&" + "&#177;" + "&&" + "&plusmn;"
$Codes[78] = "²" + "&&" + "&#178;" + "&&" + "&sup2;"
$Codes[79] = "³" + "&&" + "&#179;" + "&&" + "&sup3;"
$Codes[80] = "´" + "&&" + "&#180;" + "&&" + "&acute;"
$Codes[81] = "µ" + "&&" + "&#181;" + "&&" + "&micro;"
$Codes[82] = "¶" + "&&" + "&#182;" + "&&" + "&para;"
$Codes[83] = "·" + "&&" + "&#183;" + "&&" + "&middot;"
$Codes[84] = "¸" + "&&" + "&#184;" + "&&" + "&cedil;"
$Codes[85] = "¹" + "&&" + "&#185;" + "&&" + "&sup1;"
$Codes[86] = "º" + "&&" + "&#186;" + "&&" + "&ordm;"
$Codes[87] = "»" + "&&" + "&#187;" + "&&" + "&raquo;"
$Codes[88] = "¼" + "&&" + "&#188;" + "&&" + "&frac14;"
$Codes[89] = "½" + "&&" + "&#189;" + "&&" + "&frac12;"
$Codes[90] = "¾" + "&&" + "&#190;" + "&&" + "&frac34;"
$Codes[91] = "¿" + "&&" + "&#191;" + "&&" + "&iquest;"
$Codes[92] = "À" + "&&" + "&#192;" + "&&" + "&Agrave;"
$Codes[93] = "Á" + "&&" + "&#193;" + "&&" + "&Aacute;"
$Codes[94] = "Â" + "&&" + "&#194;" + "&&" + "&Acirc;"
$Codes[95] = "Ã" + "&&" + "&#195;" + "&&" + "&Atilde;"
$Codes[96] = "Ä" + "&&" + "&#196;" + "&&" + "&Auml;"
$Codes[97] = "Å" + "&&" + "&#197;" + "&&" + "&Aring;"
$Codes[98] = "Æ" + "&&" + "&#198;" + "&&" + "&AElig;"
$Codes[99] = "Ç" + "&&" + "&#199;" + "&&" + "&Ccedil;"
$Codes[100] = "È" + "&&" + "&#200;" + "&&" + "&Egrave;"
$Codes[101] = "É" + "&&" + "&#201;" + "&&" + "&Eacute;"
$Codes[102] = "Ê" + "&&" + "&#202;" + "&&" + "&Ecirc;"
$Codes[103] = "Ë" + "&&" + "&#203;" + "&&" + "&Euml;"
$Codes[104] = "Ì" + "&&" + "&#204;" + "&&" + "&Igrave;"
$Codes[105] = "Í" + "&&" + "&#205;" + "&&" + "&Iacute;"
$Codes[106] = "Î" + "&&" + "&#206;" + "&&" + "&Icirc;"
$Codes[107] = "Ï" + "&&" + "&#207;" + "&&" + "&Iuml;"
$Codes[108] = "Ð" + "&&" + "&#208;" + "&&" + "&eth;"
$Codes[109] = "Ñ" + "&&" + "&#209;" + "&&" + "&Ntilde;"
$Codes[110] = "Ò" + "&&" + "&#210;" + "&&" + "&Ograve;"
$Codes[111] = "Ó" + "&&" + "&#211;" + "&&" + "&Oacute;"
$Codes[112] = "Ô" + "&&" + "&#212;" + "&&" + "&Ocirc;"
$Codes[113] = "Õ" + "&&" + "&#213;" + "&&" + "&Otilde;"
$Codes[114] = "Ö" + "&&" + "&#214;" + "&&" + "&Ouml;"
$Codes[115] = "×" + "&&" + "&#215;" + "&&" + "&times;"
$Codes[116] = "Ø" + "&&" + "&#216;" + "&&" + "&Oslash;"
$Codes[117] = "Ù" + "&&" + "&#217;" + "&&" + "&Ugrave;"
$Codes[118] = "Ú" + "&&" + "&#218;" + "&&" + "&Uacute;"
$Codes[119] = "Û" + "&&" + "&#219;" + "&&" + "&Ucirc;"
$Codes[120] = "Ü" + "&&" + "&#220;" + "&&" + "&Uuml;"
$Codes[121] = "Ý" + "&&" + "&#221;" + "&&" + "&Yacute;"
$Codes[122] = "Þ" + "&&" + "&#222;" + "&&" + "&thorn;"
$Codes[123] = "ß" + "&&" + "&#223;" + "&&" + "&szlig;"
$Codes[124] = "à" + "&&" + "&#224;" + "&&" + "&agrave;"
$Codes[125] = "á" + "&&" + "&#225;" + "&&" + "&aacute;"
$Codes[126] = "â" + "&&" + "&#226;" + "&&" + "&acirc;"
$Codes[127] = "ã" + "&&" + "&#227;" + "&&" + "&atilde;"
$Codes[128] = "ä" + "&&" + "&#228;" + "&&" + "&auml;"
$Codes[129] = "å" + "&&" + "&#229;" + "&&" + "&aring;"
$Codes[130] = "æ" + "&&" + "&#230;" + "&&" + "&aelig;"
$Codes[131] = "ç" + "&&" + "&#231;" + "&&" + "&ccedil;"
$Codes[132] = "è" + "&&" + "&#232;" + "&&" + "&egrave;"
$Codes[133] = "é" + "&&" + "&#233;" + "&&" + "&eacute;"
$Codes[134] = "ê" + "&&" + "&#234;" + "&&" + "&ecirc;"
$Codes[135] = "ë" + "&&" + "&#235;" + "&&" + "&euml;"
$Codes[136] = "ì" + "&&" + "&#236;" + "&&" + "&igrave;"
$Codes[137] = "í" + "&&" + "&#237;" + "&&" + "&iacute;"
$Codes[138] = "î" + "&&" + "&#238;" + "&&" + "&icirc;"
$Codes[139] = "ï" + "&&" + "&#239;" + "&&" + "&iuml;"
$Codes[140] = "ð" + "&&" + "&#240;" + "&&" + "&eth;"
$Codes[141] = "ñ" + "&&" + "&#241;" + "&&" + "&ntilde;"
$Codes[142] = "ò" + "&&" + "&#242;" + "&&" + "&ograve;"
$Codes[143] = "ó" + "&&" + "&#243;" + "&&" + "&oacute;"
$Codes[144] = "ô" + "&&" + "&#244;" + "&&" + "&ocirc;"
$Codes[145] = "õ" + "&&" + "&#245;" + "&&" + "&otilde;"
$Codes[146] = "ö" + "&&" + "&#246;" + "&&" + "&ouml;"
$Codes[147] = "÷" + "&&" + "&#247;" + "&&" + "&divide;"
$Codes[148] = "ø" + "&&" + "&#248;" + "&&" + "&oslash;"
$Codes[149] = "ù" + "&&" + "&#249;" + "&&" + "&ugrave;"
$Codes[150] = "ú" + "&&" + "&#250;" + "&&" + "&uacute;"
$Codes[151] = "û" + "&&" + "&#251;" + "&&" + "&ucirc;"
$Codes[152] = "ü" + "&&" + "&#252;" + "&&" + "&uuml;"
$Codes[153] = "ý" + "&&" + "&#253;" + "&&" + "&yacute;"
$Codes[154] = "þ" + "&&" + "&#254;" + "&&" + "&thorn;"
$Codes[155] = "ÿ" + "&&" + "&#255;" + "&&" + "&yuml;"

$MaxTries = LEN("$string") / 5
WHILE INSTR($string, "&") <> 0 AND $Tries < $MaxTries
$Tries = $Tries + 1
$CodeFound = 0
$CodeStart = INSTR("$string", "&")
$CodeEnd = INSTR("$string", ";") + 1
$CodeToReplace = SUBSTR("$string", $CodeStart, $CodeEnd - $CodeStart)
$CodeLength = LEN("$CodeToReplace")

;---TEST
? "CodeStart: " + $CodeStart
? "CodeEnd: " + $CodeEnd
? "CodeToReplace: " + CHR(34) + $CodeToReplace + CHR(34)
? "CodeLength: " + $CodeLength
;---/TEST

IF $CodeLength > 3 AND $CodeLength < 9
;|All codes are between 4-8 characters long.
$CodeAPos = ASCAN($Codes, $CodeToReplace)
? "CodeAPos: " + $CodeAPos
IF NOT $CodePos < 0
;|The code exists
$CodeFound = 1
$CharToInsert = $Codes[$CodeAPos]
;---TEST
? "CharToInsert: " + $CharToInsert
;---/TEST
$CharToInsert = SPLIT($CharToInsert, "&&")[0]
;---TEST
? "CharToInsert: " + $CharToInsert
;---/TEST
$string = SUBSTR("$string", 1, $CodeStart - 1) + $CharToInsert + SUBSTR("$string", $CodeEnd, LEN("$string"))
ENDIF
ENDIF
IF $CodeFound <> 1
;|we need to skip the part which isn't convertible before the next loop
$stringNoChar = $stringNoChar + SUBSTR("$string", 1, $CodeEnd)
$string = SUBSTR("$string", $CodeEnd + 1, LEN("$string"))
ENDIF
LOOP
$HTMLtoText = $string
IF INSTR($HTMLtoText, "&#") <> 0
EXIT 3
ELSE
EXIT 1
ENDIF
ENDFUNCTION



[ 09. June 2003, 16:55: Message edited by: masken ]
_________________________
The tart is out there