/**
* Try to convert to plaintext
*
* @param string $source The source string.
*
* @return string Plaintext string
*
* @since 3.5
*/
protected function decode($source)
{
static $ttr;
if (!\is_array($ttr)) {
// Entity decode
$trans_tbl = get_html_translation_table(HTML_ENTITIES, ENT_COMPAT, 'ISO-8859-1');
foreach ($trans_tbl as $k => $v) {
$ttr[$v] = utf8_encode($k);
}
}
$source = strtr($source, $ttr);
// Convert decimal
$source = preg_replace_callback('/(\\d+);/m', function ($m) {
return utf8_encode(\chr($m[1]));
}, $source);
// Convert hex
$source = preg_replace_callback('/([a-f0-9]+);/mi', function ($m) {
return utf8_encode(\chr('0x' . $m[1]));
}, $source);
return $source;
}