Skip to content

Instantly share code, notes, and snippets.

@niesteszeck
Created March 28, 2018 13:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save niesteszeck/5c69b81d4c813be31d96f44b7ba6e20a to your computer and use it in GitHub Desktop.
Save niesteszeck/5c69b81d4c813be31d96f44b7ba6e20a to your computer and use it in GitHub Desktop.
Javascript HTML entities decode
/**
* Decode HTML entities (like: á, nbsp, etc) to convert them to the correct char
*
* version 1
*
* Inspired by: https://stackoverflow.com/a/41791818/5604354
*
* @param {string} string with html that has entities
* @return {string} decoded string
*/
function decodeHTMLEntities (text) {
var entities = {
'quot': '"', // QUOTATION MARK
'amp': '&', // AMPERSAND
'apos': '', // APOSTROPHE
'lt': '<', // LESS-THAN SIGN
'gt': '>', // GREATER-THAN SIGN
'nbsp': 'nbsp', // NO-BREAK SPACE
'iexcl': '¡', // INVERTED EXCLAMATION MARK
'cent': '¢', // CENT SIGN
'pound': '£', // POUND SIGN
'curren': '¤', // CURRENCY SIGN
'yen': '¥', // YEN SIGN
'brvbar': '¦', // BROKEN BAR
'sect': '§', // SECTION SIGN
'uml': '¨', // DIAERESIS
'copy': '©', // COPYRIGHT SIGN
'ordf': 'ª', // FEMININE ORDINAL INDICATOR
'laquo': '«', // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
'not': '¬', // NOT SIGN
'shy': 'shy', // SOFT HYPHEN
'reg': '®', // REGISTERED SIGN
'macr': '¯', // MACRON
'deg': '°', // DEGREE SIGN
'plusmn': '±', // PLUS-MINUS SIGN
'sup2': '²', // SUPERSCRIPT TWO
'sup3': '³', // SUPERSCRIPT THREE
'acute': '´', // ACUTE ACCENT
'micro': 'µ', // MICRO SIGN
'para': '¶', // PILCROW SIGN
'middot': '·', // MIDDLE DOT
'cedil': '¸', // CEDILLA
'sup1': '¹', // SUPERSCRIPT ONE
'ordm': 'º', // MASCULINE ORDINAL INDICATOR
'raquo': '»', // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
'frac14': '¼', // VULGAR FRACTION ONE QUARTER
'frac12': '½', // VULGAR FRACTION ONE HALF
'frac34': '¾', // VULGAR FRACTION THREE QUARTERS
'iquest': '¿', // INVERTED QUESTION MARK
'Agrave': 'À', // LATIN CAPITAL LETTER A WITH GRAVE
'Aacute': 'Á', // LATIN CAPITAL LETTER A WITH ACUTE
'Acirc': 'Â', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
'Atilde': 'Ã', // LATIN CAPITAL LETTER A WITH TILDE
'Auml': 'Ä', // LATIN CAPITAL LETTER A WITH DIAERESIS
'Aring': 'Å', // LATIN CAPITAL LETTER A WITH RING ABOVE
'AElig': 'Æ', // LATIN CAPITAL LETTER AE
'Ccedil': 'Ç', // LATIN CAPITAL LETTER C WITH CEDILLA
'Egrave': 'È', // LATIN CAPITAL LETTER E WITH GRAVE
'Eacute': 'É', // LATIN CAPITAL LETTER E WITH ACUTE
'Ecirc': 'Ê', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
'Euml': 'Ë', // LATIN CAPITAL LETTER E WITH DIAERESIS
'Igrave': 'Ì', // LATIN CAPITAL LETTER I WITH GRAVE
'Iacute': 'Í', // LATIN CAPITAL LETTER I WITH ACUTE
'Icirc': 'Î', // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
'Iuml': 'Ï', // LATIN CAPITAL LETTER I WITH DIAERESIS
'ETH': 'Ð', // LATIN CAPITAL LETTER ETH
'Ntilde': 'Ñ', // LATIN CAPITAL LETTER N WITH TILDE
'Ograve': 'Ò', // LATIN CAPITAL LETTER O WITH GRAVE
'Oacute': 'Ó', // LATIN CAPITAL LETTER O WITH ACUTE
'Ocirc': 'Ô', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
'Otilde': 'Õ', // LATIN CAPITAL LETTER O WITH TILDE
'Ouml': 'Ö', // LATIN CAPITAL LETTER O WITH DIAERESIS
'times': '×', // MULTIPLICATION SIGN
'Oslash': 'Ø', // LATIN CAPITAL LETTER O WITH STROKE
'Ugrave': 'Ù', // LATIN CAPITAL LETTER U WITH GRAVE
'Uacute': 'Ú', // LATIN CAPITAL LETTER U WITH ACUTE
'Ucirc': 'Û', // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
'Uuml': 'Ü', // LATIN CAPITAL LETTER U WITH DIAERESIS
'Yacute': 'Ý', // LATIN CAPITAL LETTER Y WITH ACUTE
'THORN': 'Þ', // LATIN CAPITAL LETTER THORN
'szlig': 'ß', // LATIN SMALL LETTER SHARP S
'agrave': 'à', // LATIN SMALL LETTER A WITH GRAVE
'aacute': 'á', // LATIN SMALL LETTER A WITH ACUTE
'acirc': 'â', // LATIN SMALL LETTER A WITH CIRCUMFLEX
'atilde': 'ã', // LATIN SMALL LETTER A WITH TILDE
'auml': 'ä', // LATIN SMALL LETTER A WITH DIAERESIS
'aring': 'å', // LATIN SMALL LETTER A WITH RING ABOVE
'aelig': 'æ', // LATIN SMALL LETTER AE
'ccedil': 'ç', // LATIN SMALL LETTER C WITH CEDILLA
'egrave': 'è', // LATIN SMALL LETTER E WITH GRAVE
'eacute': 'é', // LATIN SMALL LETTER E WITH ACUTE
'ecirc': 'ê', // LATIN SMALL LETTER E WITH CIRCUMFLEX
'euml': 'ë', // LATIN SMALL LETTER E WITH DIAERESIS
'igrave': 'ì', // LATIN SMALL LETTER I WITH GRAVE
'iacute': 'í', // LATIN SMALL LETTER I WITH ACUTE
'icirc': 'î', // LATIN SMALL LETTER I WITH CIRCUMFLEX
'iuml': 'ï', // LATIN SMALL LETTER I WITH DIAERESIS
'eth': 'ð', // LATIN SMALL LETTER ETH
'ntilde': 'ñ', // LATIN SMALL LETTER N WITH TILDE
'ograve': 'ò', // LATIN SMALL LETTER O WITH GRAVE
'oacute': 'ó', // LATIN SMALL LETTER O WITH ACUTE
'ocirc': 'ô', // LATIN SMALL LETTER O WITH CIRCUMFLEX
'otilde': 'õ', // LATIN SMALL LETTER O WITH TILDE
'ouml': 'ö', // LATIN SMALL LETTER O WITH DIAERESIS
'divide': '÷', // DIVISION SIGN
'oslash': 'ø', // LATIN SMALL LETTER O WITH STROKE
'ugrave': 'ù', // LATIN SMALL LETTER U WITH GRAVE
'uacute': 'ú', // LATIN SMALL LETTER U WITH ACUTE
'ucirc': 'û', // LATIN SMALL LETTER U WITH CIRCUMFLEX
'uuml': 'ü', // LATIN SMALL LETTER U WITH DIAERESIS
'yacute': 'ý', // LATIN SMALL LETTER Y WITH ACUTE
'thorn': 'þ', // LATIN SMALL LETTER THORN
'yuml': 'ÿ', // LATIN SMALL LETTER Y WITH DIAERESIS
'OElig': 'Œ', // LATIN CAPITAL LIGATURE OE
'oelig': 'œ', // LATIN SMALL LIGATURE OE
'Scaron': 'Š', // LATIN CAPITAL LETTER S WITH CARON
'scaron': 'š', // LATIN SMALL LETTER S WITH CARON
'Yuml': 'Ÿ', // LATIN CAPITAL LETTER Y WITH DIAERESIS
'fnof': 'ƒ', // LATIN SMALL LETTER F WITH HOOK
'circ': 'ˆ', // MODIFIER LETTER CIRCUMFLEX ACCENT
'tilde': '˜', // SMALL TILDE
'Alpha': 'Α', // GREEK CAPITAL LETTER ALPHA
'Beta': 'Β', // GREEK CAPITAL LETTER BETA
'Gamma': 'Γ', // GREEK CAPITAL LETTER GAMMA
'Delta': 'Δ', // GREEK CAPITAL LETTER DELTA
'Epsilon': 'Ε', // GREEK CAPITAL LETTER EPSILON
'Zeta': 'Ζ', // GREEK CAPITAL LETTER ZETA
'Eta': 'Η', // GREEK CAPITAL LETTER ETA
'Theta': 'Θ', // GREEK CAPITAL LETTER THETA
'Iota': 'Ι', // GREEK CAPITAL LETTER IOTA
'Kappa': 'Κ', // GREEK CAPITAL LETTER KAPPA
'Lambda': 'Λ', // GREEK CAPITAL LETTER LAMDA
'Mu': 'Μ', // GREEK CAPITAL LETTER MU
'Nu': 'Ν', // GREEK CAPITAL LETTER NU
'Xi': 'Ξ', // GREEK CAPITAL LETTER XI
'Omicron': 'Ο', // GREEK CAPITAL LETTER OMICRON
'Pi': 'Π', // GREEK CAPITAL LETTER PI
'Rho': 'Ρ', // GREEK CAPITAL LETTER RHO
'Sigma': 'Σ', // GREEK CAPITAL LETTER SIGMA
'Tau': 'Τ', // GREEK CAPITAL LETTER TAU
'Upsilon': 'Υ', // GREEK CAPITAL LETTER UPSILON
'Phi': 'Φ', // GREEK CAPITAL LETTER PHI
'Chi': 'Χ', // GREEK CAPITAL LETTER CHI
'Psi': 'Ψ', // GREEK CAPITAL LETTER PSI
'Omega': 'Ω', // GREEK CAPITAL LETTER OMEGA
'alpha': 'α', // GREEK SMALL LETTER ALPHA
'beta': 'β', // GREEK SMALL LETTER BETA
'gamma': 'γ', // GREEK SMALL LETTER GAMMA
'delta': 'δ', // GREEK SMALL LETTER DELTA
'epsilon': 'ε', // GREEK SMALL LETTER EPSILON
'zeta': 'ζ', // GREEK SMALL LETTER ZETA
'eta': 'η', // GREEK SMALL LETTER ETA
'theta': 'θ', // GREEK SMALL LETTER THETA
'iota': 'ι', // GREEK SMALL LETTER IOTA
'kappa': 'κ', // GREEK SMALL LETTER KAPPA
'lambda': 'λ', // GREEK SMALL LETTER LAMDA
'mu': 'μ', // GREEK SMALL LETTER MU
'nu': 'ν', // GREEK SMALL LETTER NU
'xi': 'ξ', // GREEK SMALL LETTER XI
'omicron': 'ο', // GREEK SMALL LETTER OMICRON
'pi': 'π', // GREEK SMALL LETTER PI
'rho': 'ρ', // GREEK SMALL LETTER RHO
'sigmaf': 'ς', // GREEK SMALL LETTER FINAL SIGMA
'sigma': 'σ', // GREEK SMALL LETTER SIGMA
'tau': 'τ', // GREEK SMALL LETTER TAU
'upsilon': 'υ', // GREEK SMALL LETTER UPSILON
'phi': 'φ', // GREEK SMALL LETTER PHI
'chi': 'χ', // GREEK SMALL LETTER CHI
'psi': 'ψ', // GREEK SMALL LETTER PSI
'omega': 'ω', // GREEK SMALL LETTER OMEGA
'thetasym': 'ϑ', // GREEK THETA SYMBOL
'upsih': 'ϒ', // GREEK UPSILON WITH HOOK SYMBOL
'piv': 'ϖ', // GREEK PI SYMBOL
'ensp': 'ensp', // EN SPACE
'emsp': 'emsp', // EM SPACE
'thinsp': 'thsp', // THIN SPACE
'zwnj': 'zwnj', // ZERO WIDTH NON-JOINER
'zwj': 'zwj', // ZERO WIDTH JOINER
'lrm': 'lrm', // LEFT-TO-RIGHT MARK
'rlm': 'rlm', // RIGHT-TO-LEFT MARK
'ndash': '–', // EN DASH
'mdash': '—', // EM DASH
'lsquo': '‘', // LEFT SINGLE QUOTATION MARK
'rsquo': '’', // RIGHT SINGLE QUOTATION MARK
'sbquo': '‚', // SINGLE LOW-9 QUOTATION MARK
'ldquo': '“', // LEFT DOUBLE QUOTATION MARK
'rdquo': '”', // RIGHT DOUBLE QUOTATION MARK
'bdquo': '„', // DOUBLE LOW-9 QUOTATION MARK
'dagger': '†', // DAGGER
'Dagger': '‡', // DOUBLE DAGGER
'bull': '•', // BULLET
'hellip': '…', // HORIZONTAL ELLIPSIS
'permil': '‰', // PER MILLE SIGN
'prime': '′', // PRIME
'Prime': '″', // DOUBLE PRIME
'lsaquo': '‹', // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
'rsaquo': '›', // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
'oline': '‾', // OVERLINE
'frasl': '⁄', // FRACTION SLASH
'euro': '€', // EURO SIGN
'image': 'ℑ', // BLACK-LETTER CAPITAL I
'weierp': '℘', // SCRIPT CAPITAL P
'real': 'ℜ', // BLACK-LETTER CAPITAL R
'trade': '™', // TRADE MARK SIGN
'alefsym': 'ℵ', // ALEF SYMBOL
'larr': '←', // LEFTWARDS ARROW
'uarr': '↑', // UPWARDS ARROW
'rarr': '→', // RIGHTWARDS ARROW
'darr': '↓', // DOWNWARDS ARROW
'harr': '↔', // LEFT RIGHT ARROW
'crarr': '↵', // DOWNWARDS ARROW WITH CORNER LEFTWARDS
'lArr': '⇐', // LEFTWARDS DOUBLE ARROW
'uArr': '⇑', // UPWARDS DOUBLE ARROW
'rArr': '⇒', // RIGHTWARDS DOUBLE ARROW
'dArr': '⇓', // DOWNWARDS DOUBLE ARROW
'hArr': '⇔', // LEFT RIGHT DOUBLE ARROW
'forall': '∀', // FOR ALL
'part': '∂', // PARTIAL DIFFERENTIAL
'exist': '∃', // THERE EXISTS
'empty': '∅', // EMPTY SET
'nabla': '∇', // NABLA
'isin': '∈', // ELEMENT OF
'notin': '∉', // NOT AN ELEMENT OF
'ni': '∋', // CONTAINS AS MEMBER
'prod': '∏', // N-ARY PRODUCT
'sum': '∑', // N-ARY SUMMATION
'minus': '−', // MINUS SIGN
'lowast': '∗', // ASTERISK OPERATOR
'radic': '√', // SQUARE ROOT
'prop': '∝', // PROPORTIONAL TO
'infin': '∞', // INFINITY
'ang': '∠', // ANGLE
'and': '∧', // LOGICAL AND
'or': '∨', // LOGICAL OR
'cap': '∩', // INTERSECTION
'cup': '∪', // UNION
'int': '∫', // INTEGRAL
'there4': '∴', // THEREFORE
'sim': '∼', // TILDE OPERATOR
'cong': '≅', // APPROXIMATELY EQUAL TO
'asymp': '≈', // ALMOST EQUAL TO
'ne': '≠', // NOT EQUAL TO
'equiv': '≡', // IDENTICAL TO
'le': '≤', // LESS-THAN OR EQUAL TO
'ge': '≥', // GREATER-THAN OR EQUAL TO
'sub': '⊂', // SUBSET OF
'sup': '⊃', // SUPERSET OF
'nsub': '⊄', // NOT A SUBSET OF
'sube': '⊆', // SUBSET OF OR EQUAL TO
'supe': '⊇', // SUPERSET OF OR EQUAL TO
'oplus': '⊕', // CIRCLED PLUS
'otimes': '⊗', // CIRCLED TIMES
'perp': '⊥', // UP TACK
'sdot': '⋅', // DOT OPERATOR
'lceil': '⌈', // LEFT CEILING
'rceil': '⌉', // RIGHT CEILING
'lfloor': '⌊', // LEFT FLOOR
'rfloor': '⌋', // RIGHT FLOOR
'lang': '⟨', // LEFT-POINTING ANGLE BRACKET
'rang': '⟩', // RIGHT-POINTING ANGLE BRACKET
'loz': '◊', // LOZENGE
'spades': '♠', // BLACK SPADE SUIT
'clubs': '♣', // BLACK CLUB SUIT
'hearts': '♥', // BLACK HEART SUIT
'diams': '♦', // BLACK DIAMOND SUIT
}
return text.replace(/&([^;]+);/gm, function (match, entity) {
return entities[entity] || match
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment