Convert all applicable characters to HTML entities

# htmlentities

(PHP 4, PHP 5, PHP 7, PHP 8)

htmlentities — Convert all applicable characters to HTML entities

### Description

htmlentities(
string `$string`,
int `$flags` = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
?string `$encoding` = `null`,
bool `$double_encode` = `true`
): string

This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities. The get_html_translation_table() function can be used to return the translation table used dependent upon the provided `flags` constants.

If you want to decode instead (the reverse) you can use html_entity_decode().

### Parameters

`string`

  The input string.

`flags`

  A bitmask of one or more of the following flags, which specify how to handle quotes, invalid code unit sequences and the used document type. The default is `ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401`.

  Available `flags` constants
  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_IGNORE` | Silently discard invalid code unit sequences instead of returning an empty string. Using this flag is discouraged as it » may have security implications.
  `ENT_SUBSTITUTE` | Replace invalid code unit sequences with a Unicode Replacement Character U+FFFD (UTF-8) or &#FFFD; (otherwise) instead of returning an empty string.
  `ENT_DISALLOWED` | Replace invalid code points for the given document type with a Unicode Replacement Character U+FFFD (UTF-8) or &#FFFD; (otherwise) instead of leaving them as is. This may be useful, for instance, to ensure the well-formedness of XML documents with embedded external content.
  `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.

`encoding`

  An optional argument defining the encoding used when converting characters.

  If omitted, `encoding` defaults to the value of the default_charset configuration option.

  Although this argument is technically optional, you are highly encouraged to specify the correct value for your code if the default_charset configuration option may be set incorrectly for the given input.

  The following character sets are supported:

  Supported charsets
  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.

  > Note: Any other character sets are not recognized. The default encoding will be used instead and a warning will be emitted.

`double_encode`

  When `double_encode` is turned off PHP will not encode existing html entities. The default is to convert everything.

### Return Values

Returns the encoded string.

If the input `string` contains an invalid code unit sequence within the given `encoding` an empty string will be returned, unless either the `ENT_IGNORE` or `ENT_SUBSTITUTE` flags are set.

### Changelog

Version | Description
--- | ---
8.1.0 | `flags` changed from `ENT_COMPAT` to `ENT_QUOTES` | `ENT_SUBSTITUTE` | `ENT_HTML401`.
8.0.0 | `encoding` is nullable now.

### Examples

Example #1 A htmlentities() example

`<?php
$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str);
echo "\n\n";
echo htmlentities($str, ENT_COMPAT);
?>`

The above example will output:

    A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;

    A 'quote' is &lt;b&gt;bold&lt;/b&gt

Example #2 Usage of `ENT_IGNORE`

`<?php
$str = "\x8F!!!";
// Outputs an empty string
echo htmlentities($str, ENT_QUOTES, "UTF-8");
// Outputs "!!!"
echo htmlentities($str, ENT_QUOTES | ENT_IGNORE, "UTF-8");
?>`

### See Also

- html_entity_decode() - Convert HTML entities to their corresponding characters
- get_html_translation_table() - Returns the translation table used by htmlspecialchars and htmlentities
- htmlspecialchars() - Convert special characters to HTML entities
- nl2br() - Inserts HTML line breaks before all newlines in a string
- urlencode() - URL-encodes string

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open