private function _entity_decode(string $str): string
    {
        static $HTML_ENTITIES_CACHE;

        $flags = ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE;

        // decode
        $str = UTF8::html_entity_decode($str, $flags);

        // decode-again, for e.g. HHVM or miss configured applications ...
        if (\preg_match_all('/(?<html_entity>&[A-Za-z]{2,}[;]{0})/', $str, $matches)) {
            if ($HTML_ENTITIES_CACHE === null) {

                // links:
                // - http://dev.w3.org/html5/html-author/charref
                // - http://www.w3schools.com/charsets/ref_html_entities_n.asp
                $entitiesSecurity = [
                    '&#x00000;'          => '',
                    '&#0;'               => '',
                    '&#x00001;'          => '',
                    '&#1;'               => '',
                    '&nvgt;'             => '',
                    '&#61253;'           => '',
                    '&#x0EF45;'          => '',
                    '&shy;'              => '',
                    '&#x000AD;'          => '',
                    '&#173;'             => '',
                    '&colon;'            => ':',
                    '&#x0003A;'          => ':',
                    '&#58;'              => ':',
                    '&lpar;'             => '(',
                    '&#x00028;'          => '(',
                    '&#40;'              => '(',
                    '&rpar;'             => ')',
                    '&#x00029;'          => ')',
                    '&#41;'              => ')',
                    '&quest;'            => '?',
                    '&#x0003F;'          => '?',
                    '&#63;'              => '?',
                    '&sol;'              => '/',
                    '&#x0002F;'          => '/',
                    '&#47;'              => '/',
                    '&apos;'             => '\'',
                    '&#x00027;'          => '\'',
                    '&#039;'             => '\'',
                    '&#39;'              => '\'',
                    '&#x27;'             => '\'',
                    '&bsol;'             => '\'',
                    '&#x0005C;'          => '\\',
                    '&#92;'              => '\\',
                    '&comma;'            => ',',
                    '&#x0002C;'          => ',',
                    '&#44;'              => ',',
                    '&period;'           => '.',
                    '&#x0002E;'          => '.',
                    '&quot;'             => '"',
                    '&QUOT;'             => '"',
                    '&#x00022;'          => '"',
                    '&#34;'              => '"',
                    '&grave;'            => '`',
                    '&DiacriticalGrave;' => '`',
                    '&#x00060;'          => '`',
                    '&#96;'              => '`',
                    '&#46;'              => '.',
                    '&equals;'           => '=',
                    '&#x0003D;'          => '=',
                    '&#61;'              => '=',
                    '&newline;'          => "\n",
                    '&#x0000A;'          => "\n",
                    '&#10;'              => "\n",
                    '&tab;'              => "\t",
                    '&#x00009;'          => "\t",
                    '&#9;'               => "\t",
                ];

                $HTML_ENTITIES_CACHE = \array_merge(
                    $entitiesSecurity,
                    \array_flip(\get_html_translation_table(HTML_ENTITIES, $flags)),
                    \array_flip(self::_get_data('entities_fallback'))
                );
            }

            $search = [];
            $replace = [];
            foreach ($matches['html_entity'] as $match) {
                $match .= ';';
                if (isset($HTML_ENTITIES_CACHE[$match])) {
                    $search[$match] = $match;
                    $replace[$match] = $HTML_ENTITIES_CACHE[$match];
                }
            }

            if (\count($replace) > 0) {
                $str = \str_replace($search, $replace, $str);
            }
        }

        return $str;
    }
private function _entity_decode(string $str): string
    {
        static $HTML_ENTITIES_CACHE;

        $flags = ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE;

        // decode
        $str = UTF8::html_entity_decode($str, $flags);

        // decode-again, for e.g. HHVM or miss configured applications ...
        if (\preg_match_all('/(?<html_entity>&[A-Za-z]{2,}[;]{0})/', $str, $matches)) {
            if ($HTML_ENTITIES_CACHE === null) {

                // links:
                // - http://dev.w3.org/html5/html-author/charref
                // - http://www.w3schools.com/charsets/ref_html_entities_n.asp
                $entitiesSecurity = [
                    '&#x00000;'          => '',
                    '&#0;'               => '',
                    '&#x00001;'          => '',
                    '&#1;'               => '',
                    '&nvgt;'             => '',
                    '&#61253;'           => '',
                    '&#x0EF45;'          => '',
                    '&shy;'              => '',
                    '&#x000AD;'          => '',
                    '&#173;'             => '',
                    '&colon;'            => ':',
                    '&#x0003A;'          => ':',
                    '&#58;'              => ':',
                    '&lpar;'             => '(',
                    '&#x00028;'          => '(',
                    '&#40;'              => '(',
                    '&rpar;'             => ')',
                    '&#x00029;'          => ')',
                    '&#41;'              => ')',
                    '&quest;'            => '?',
                    '&#x0003F;'          => '?',
                    '&#63;'              => '?',
                    '&sol;'              => '/',
                    '&#x0002F;'          => '/',
                    '&#47;'              => '/',
                    '&apos;'             => '\'',
                    '&#x00027;'          => '\'',
                    '&#039;'             => '\'',
                    '&#39;'              => '\'',
                    '&#x27;'             => '\'',
                    '&bsol;'             => '\'',
                    '&#x0005C;'          => '\\',
                    '&#92;'              => '\\',
                    '&comma;'            => ',',
                    '&#x0002C;'          => ',',
                    '&#44;'              => ',',
                    '&period;'           => '.',
                    '&#x0002E;'          => '.',
                    '&quot;'             => '"',
                    '&QUOT;'             => '"',
                    '&#x00022;'          => '"',
                    '&#34;'              => '"',
                    '&grave;'            => '`',
                    '&DiacriticalGrave;' => '`',
                    '&#x00060;'          => '`',
                    '&#96;'              => '`',
                    '&#46;'              => '.',
                    '&equals;'           => '=',
                    '&#x0003D;'          => '=',
                    '&#61;'              => '=',
                    '&newline;'          => "\n",
                    '&#x0000A;'          => "\n",
                    '&#10;'              => "\n",
                    '&tab;'              => "\t",
                    '&#x00009;'          => "\t",
                    '&#9;'               => "\t",
                ];

                $HTML_ENTITIES_CACHE = \array_merge(
                    $entitiesSecurity,
                    \array_flip(\get_html_translation_table(HTML_ENTITIES, $flags)),
                    \array_flip(self::_get_data('entities_fallback'))
                );
            }

            $search = [];
            $replace = [];
            foreach ($matches['html_entity'] as $match) {
                $match .= ';';
                if (isset($HTML_ENTITIES_CACHE[$match])) {
                    $search[$match] = $match;
                    $replace[$match] = $HTML_ENTITIES_CACHE[$match];
                }
            }

            if (\count($replace) > 0) {
                $str = \str_replace($search, $replace, $str);
            }
        }

        return $str;
    }
private function _entity_decode ( string $ str ) : string { static $ HTML_ENTITIES_CACHE ; $ flags = ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE ; // decode $ str = UTF8 :: html_entity_decode ( $ str , $ flags ) ; // decode-again, for e.g. HHVM or miss configured applications ... if ( \ preg_match_all ( '/(?<html_entity>&[A-Za-z]{2,}[;]{0})/' , $ str , $ matches ) ) { if ( $ HTML_ENTITIES_CACHE === null ) { // links: // - http://dev.w3.org/html5/html-author/charref // - http://www.w3schools.com/charsets/ref_html_entities_n.asp $ entitiesSecurity = [ '&#x00000;' => '' , '&#0;' => '' , '&#x00001;' => '' , '&#1;' => '' , '&nvgt;' => '' , '&#61253;' => '' , '&#x0EF45;' => '' , '&shy;' => '' , '&#x000AD;' => '' , '&#173;' => '' , '&colon;' => ':' , '&#x0003A;' => ':' , '&#58;' => ':' , '&lpar;' => '(' , '&#x00028;' => '(' , '&#40;' => '(' , '&rpar;' => ')' , '&#x00029;' => ')' , '&#41;' => ')' , '&quest;' => '?' , '&#x0003F;' => '?' , '&#63;' => '?' , '&sol;' => '/' , '&#x0002F;' => '/' , '&#47;' => '/' , '&apos;' => '\'' , '&#x00027;' => '\'' , '&#039;' => '\'' , '&#39;' => '\'' , '&#x27;' => '\'' , '&bsol;' => '\'' , '&#x0005C;' => '\\' , '&#92;' => '\\' , '&comma;' => ',' , '&#x0002C;' => ',' , '&#44;' => ',' , '&period;' => '.' , '&#x0002E;' => '.' , '&quot;' => '"' , '&QUOT;' => '"' , '&#x00022;' => '"' , '&#34;' => '"' , '&grave;' => '`' , '&DiacriticalGrave;' => '`' , '&#x00060;' => '`' , '&#96;' => '`' , '&#46;' => '.' , '&equals;' => '=' , '&#x0003D;' => '=' , '&#61;' => '=' , '&newline;' => "\n" , '&#x0000A;' => "\n" , '&#10;' => "\n" , '&tab;' => "\t" , '&#x00009;' => "\t" , '&#9;' => "\t" , ] ; $ HTML_ENTITIES_CACHE = \ array_merge ( $ entitiesSecurity , \ array_flip ( \ get_html_translation_table ( HTML_ENTITIES , $ flags ) ) , \ array_flip ( self :: _get_data ( 'entities_fallback' ) ) ) ; } $ search = [ ] ; $ replace = [ ] ; foreach ( $ matches [ 'html_entity' ] as $ match ) { $ match .= ';' ; if ( isset ( $ HTML_ENTITIES_CACHE [ $ match ] ) ) { $ search [ $ match ] = $ match ; $ replace [ $ match ] = $ HTML_ENTITIES_CACHE [ $ match ] ; } } if ( \ count ( $ replace ) > 0 ) { $ str = \ str_replace ( $ search , $ replace , $ str ) ; } } return $ str ; }
Entity-decoding.

@param string $str

@return string
Entity - decoding .