How to reverse htmlentities() / What is the opposite of htmlentities()?

October 26, 2018

If you need to reverse or undo htmlentities() you can use the following function to do so in PHP:

<?php
html_entity_decode($var)

This will convert HTML entities to their corresponding characters.

Info about html_entity_decode()

There are a few flags that you can use (as the 2nd parameter):

Constant Name Description
ENT_COMPAT Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES Will convert both double and single quotes.
ENT_NOQUOTES Will leave both double and single quotes unconverted.
ENT_HTML401

Handle code as HTML 4.01.

ENT_XML1

Handle code as XML 1.

ENT_XHTML

Handle code as XHTML.

ENT_HTML5

Handle code as HTML 5.

You can set what encoding to use by passing an option to the 3rd parameter. By default it will use the default_charset php setting.

The following character sets are supported:

Charset Aliases Description
ISO-8859-1 ISO8859-1

Western European, Latin-1.

ISO-8859-5 ISO8859-5

Little used cyrillic charset (Latin/Cyrillic).

ISO-8859-15 ISO8859-15

Western European, Latin-9. Adds the Euro sign, French and Finnish

letters missing in Latin-1 (ISO-8859-1).

UTF-8  

ASCII compatible multi-byte 8-bit Unicode.

cp866 ibm866, 866

DOS-specific Cyrillic charset.

cp1251 Windows-1251, win-1251, 1251

Windows-specific Cyrillic charset.

cp1252 Windows-1252, 1252

Windows specific charset for Western European.

KOI8-R koi8-ru, koi8r

Russian.

BIG5 950

Traditional Chinese, mainly used in Taiwan.

GB2312 936

Simplified Chinese, national standard character set.

BIG5-HKSCS  

Big5 with Hong Kong extensions, Traditional Chinese.

Shift_JIS SJIS, SJIS-win, cp932, 932

Japanese

EUC-JP EUCJP, eucJP-win

Japanese

MacRoman  

Charset that was used by Mac OS.

''  

An empty string activates detection from script encoding (Zend multibyte),

default_charset and current

locale (see nl_langinfo() and

setlocale()), in this order. Not recommended.