$source = preg_replace('/&#(\d+);/me', "utf8_encode(chr(\\1))", $source);
Вышеприведенный код дает устаревшее предупреждение.
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in
Как заменить preg_replace () на preg_replace_callback ()?
Прочтите документацию здесь, http://www.php.net/manual/en/function.preg-replace-callback.php
Вот пример preg_replace_callback
$source = preg_replace_callback('/&#(\d+);/m', function($matches){ return utf8_encode(chr($matches[1])); }, $source);
$source = preg_replace_callback ( '/\&\#(\d+)\;/m', function($match){ return utf8_encode(chr($match[1])); }, $source );