str_replace behviour在2台服务器

时间:2015-06-18 04:30:23

标签: php str-replace

我在输出缓冲中使用str_replace来翻译网站。 它在本地服务器和测试服务器上运行良好,但在生产服务器中完全失败。

以下是原始代码:

function lang_modify($buffer){

     require('get_messages.php');

     foreach($messages as $message){
            $stringToBeReplaced = $message[0];
            $stringReplace = $message[1];
            $buffer = str_replace($stringToBeReplaced,$stringReplace, $buffer);
     }
     return $buffer;
}

$lang = $_SESSION['lang'];
if($lang=='en'){
    $buffer = ob_start('lang_modify');
}

然后,当我将日文字符翻译成英文时,我想到了一个多字节问题,所以我用mb_ereg_replace替换了str_replace。 同样,它在本地服务器和测试服务器上工作得很好,但在生产服务器上却没有。

function lang_modify($buffer){

        require('get_messages.php');
        mb_regex_encoding("UTF-8");
        foreach($messages as $message){
            $pattern = "(".$message[0].")";
            $stringReplace = $message[1];
            $buffer = mb_ereg_replace($pattern, $stringReplace, $buffer);
        }
        return $buffer;
    }

在这两种情况下,都会修改意外的字符串,从而导致javascript文件出错,并且在大多数情况下,预期的替换不会被替换。 str_replace是否有可能依赖于服务器设置?

我确切地说我不能用另一种方式来翻译网站。 我必须在生产服务器上使用它。

有没有人知道如何解决这个问题?

0 个答案:

没有答案