MessageCachePHP: throw out stupid RE, use simple str_replace's
authorDomas Mituzas <midom@users.mediawiki.org>
Mon, 29 May 2006 05:49:03 +0000 (05:49 +0000)
committerDomas Mituzas <midom@users.mediawiki.org>
Mon, 29 May 2006 05:49:03 +0000 (05:49 +0000)
includes/MessageCache.php

index 35ea4d5..a9fa1a4 100644 (file)
@@ -148,16 +148,22 @@ class MessageCache {
                $file = fopen( $filename.'.tmp', 'w');
                fwrite($file,"<?php\n//$hash\n\n \$this->mCache = array(");
                
-               $re="/(?<!\\\\)'/";
                foreach ($array as $key => $message) {
-                       fwrite($file, "'". preg_replace($re, "\'", $key).
-                               "' => '" . preg_replace( $re, "\'", $message) . "',\n");
+                       fwrite($file, "'". $this->escapeForScript($key).
+                               "' => '" . $this->escapeForScript($message). 
+                               "',\n");
                }
                fwrite($file,");\n?>");
                fclose($file);
                rename($filename.'.tmp',$filename);
        }
 
+       function escapeForScript($string) {
+               $string = str_replace( '\\', '\\\\', $string );
+               $string = str_replace( '\'', '\\\'', $string );
+               return $string;
+       }
+
        /**
         * Loads messages either from memcached or the database, if not disabled
         * On error, quietly switches to a fallback mode