X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fdecode%2Futf_8.php;h=870293dadb3fb7d60f7bea27594182bc1ee31e69;hb=701e7beed3baca980039f978c6d536dd91cae775;hp=e521c67f777d11a542b812aef5cd704fc1f84552;hpb=e50f5ac2682d655013d18d97f9a2aa30b7ed9485;p=squirrelmail.git diff --git a/functions/decode/utf_8.php b/functions/decode/utf_8.php index e521c67f..870293da 100644 --- a/functions/decode/utf_8.php +++ b/functions/decode/utf_8.php @@ -1,10 +1,8 @@ + * @copyright 2003-2014 The SquirrelMail Project Team + * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail * @subpackage decode @@ -60,31 +60,31 @@ function charset_decode_utf_8 ($string) { // 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 /* (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