Fix mixed use of message ID list (#2859)
[squirrelmail.git] / functions / decode / iso_8859_1.php
index c5f8ada092928f71d392a23db4384a2adffa4834..7a549765b5968dc5cee87f6ebc9a7d372f24255d 100644 (file)
@@ -6,7 +6,7 @@
  * 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-2012 The SquirrelMail Project Team
+ * @copyright 2003-2021 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -23,11 +23,21 @@ function charset_decode_iso_8859_1 ($string) {
     if (! sq_is8bit($string,'iso-8859-1'))
         return $string;
 
-    $string = preg_replace("/([\201-\237])/e","'&#' . ord('\\1') . ';'",$string);
+    $string = preg_replace_callback("/([\201-\237])/",
+                                    (check_php_version(5, 3, 0)
+                                     ? function($matches) { return '&#' . ord($matches[1]) . ';'; }
+                                     : 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", ' ', $string);
 
-    $string = preg_replace("/([\241-\377])/e","'&#' . ord('\\1') . ';'",$string);
+    $string = preg_replace_callback("/([\241-\377])/",
+                                    (check_php_version(5, 3, 0)
+                                     ? function($matches) { return '&#' . ord($matches[1]) . ';'; }
+                                     : create_function ('$matches', 'return \'&#\' . ord($matches[1]) . \';\';')
+                                    ),
+                                    $string);
     return $string;
 }