Happy New Year
[squirrelmail.git] / functions / decode / iso_8859_1.php
index 6efc59c04714e4824ee111bf9560e5fa20d68101..ddf6f48f8472479a17eefa7d66acfff44c586dff 100644 (file)
@@ -1,13 +1,13 @@
 <?php
+
 /**
  * decode/iso8859-1.php
  *
- * Copyright (c) 2003-2004 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
  * This file contains iso-8859-1 decoding function that is needed to read
  * iso-8859-1 encoded mails in non-iso-8859-1 locale.
  *
+ * @copyright 2003-2016 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
  * @subpackage decode
  * @return string $string Decoded string
  */
 function charset_decode_iso_8859_1 ($string) {
-    global $default_charset;
-
-    if (strtolower($default_charset) == 'iso-8859-1')
+    // don't do decoding when there are no 8bit symbols
+    if (! sq_is8bit($string,'iso-8859-1'))
         return $string;
 
-    /* Only do the slow convert if there are 8-bit characters */
-    /* there is no 0x80-0x9F letters in ISO8859-* */
-    if ( ! ereg("[\241-\377]", $string) )
-        return $string;
-
-    $string = preg_replace("/([\201-\237])/e","'&#' . ord('\\1') . ';'",$string);
+    $string = preg_replace_callback("/([\201-\237])/",
+    create_function ('$matches', 'return \'&#\' . ord($matches[1]) . \';\';'),
+    $string);
 
     /* I don't want to use 0xA0 (\240) in any ranges. RH73 may dislike it */
     $string = str_replace("\240", '&#160;', $string);
 
-    $string = preg_replace("/([\241-\377])/e","'&#' . ord('\\1') . ';'",$string);
+    $string = preg_replace_callback("/([\241-\377])/",
+    create_function ('$matches', 'return \'&#\' . ord($matches[1]) . \';\';'),
+    $string);
     return $string;
 }
-
-?>