X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=functions%2Fdecode%2Futf_8.php;h=263fb6e2bfcf9e79e8f4c32ee9297fb76d48d8ea;hb=8ed1923822b383ddb338e9eef75bb7f110cc47b4;hp=c6b1e61584d1d0c95ce3cca8a9449ced2a1a6e91;hpb=a5ab6455a827b1cca6deb3e0fd095cea4b29d9d6;p=squirrelmail.git diff --git a/functions/decode/utf_8.php b/functions/decode/utf_8.php index c6b1e615..263fb6e2 100644 --- a/functions/decode/utf_8.php +++ b/functions/decode/utf_8.php @@ -1,10 +1,8 @@ + * @copyright 2003-2019 The SquirrelMail Project Team + * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail * @subpackage decode @@ -58,33 +58,33 @@ function charset_decode_utf_8 ($string) { if (! sq_is8bit($string,'utf-8')) return $string; - // decode six byte unicode characters + // decode six byte unicode characters /* (i think currently there is no such symbol) - $string = preg_replace("/([\374-\375])([\200-\277])([\200-\277])([\200-\277])([\200-\277])([\200-\277])/e", - "'&#'.((ord('\\1')-252)*1073741824+(ord('\\2')-200)*16777216+(ord('\\3')-200)*262144+(ord('\\4')-128)*4096+(ord('\\5')-128)*64+(ord('\\6')-128)).';'", + $string = preg_replace_callback("/([\374-\375])([\200-\277])([\200-\277])([\200-\277])([\200-\277])([\200-\277])/", + create_function ('$matches', 'return \'&#\'.((ord($matches[1])-252)*1073741824+(ord($matches[2])-200)*16777216+(ord($matches[3])-200)*262144+(ord($matches[4])-128)*4096+(ord($matches[5])-128)*64+(ord($matches[6])-128)).\';\';'), $string); */ - // decode five byte unicode characters + // decode five byte unicode characters /* (i think currently there is no such symbol) - $string = preg_replace("/([\370-\373])([\200-\277])([\200-\277])([\200-\277])([\200-\277])/e", - "'&#'.((ord('\\1')-248)*16777216+(ord('\\2')-200)*262144+(ord('\\3')-128)*4096+(ord('\\4')-128)*64+(ord('\\5')-128)).';'", + $string = preg_replace_callback("/([\370-\373])([\200-\277])([\200-\277])([\200-\277])([\200-\277])/", + create_function ('$matches', 'return \'&#\'.((ord($matches[1])-248)*16777216+(ord($matches[2])-200)*262144+(ord($matches[3])-128)*4096+(ord($matches[4])-128)*64+(ord($matches[5])-128)).\';\';'), $string); */ - + // decode four byte unicode characters - $string = preg_replace("/([\360-\367])([\200-\277])([\200-\277])([\200-\277])/e", - "'&#'.((ord('\\1')-240)*262144+(ord('\\2')-128)*4096+(ord('\\3')-128)*64+(ord('\\4')-128)).';'", + $string = preg_replace_callback("/([\360-\367])([\200-\277])([\200-\277])([\200-\277])/", + create_function ('$matches', 'return \'&#\'.((ord($matches[1])-240)*262144+(ord($matches[2])-128)*4096+(ord($matches[3])-128)*64+(ord($matches[4])-128)).\';\';'), $string); // decode three byte unicode characters - $string = preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e", - "'&#'.((ord('\\1')-224)*4096+(ord('\\2')-128)*64+(ord('\\3')-128)).';'", + $string = preg_replace_callback("/([\340-\357])([\200-\277])([\200-\277])/", + create_function ('$matches', 'return \'&#\'.((ord($matches[1])-224)*4096+(ord($matches[2])-128)*64+(ord($matches[3])-128)).\';\';'), $string); // decode two byte unicode characters - $string = preg_replace("/([\300-\337])([\200-\277])/e", - "'&#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'", + $string = preg_replace_callback("/([\300-\337])([\200-\277])/", + create_function ('$matches', 'return \'&#\'.((ord($matches[1])-192)*64+(ord($matches[2])-128)).\';\';'), $string); // remove broken unicode @@ -92,4 +92,3 @@ function charset_decode_utf_8 ($string) { return $string; } -?> \ No newline at end of file