Php str_replace behviour在两台服务器上不同

Php str_replace behviour在两台服务器上不同,php,str-replace,Php,Str Replace,为了翻译一个网站,我在输出缓冲中使用str_replace。 它在本地服务器和测试服务器上运行良好,但在生产服务器上完全失败 function lang_modify($buffer){ require('get_messages.php'); mb_regex_encoding("UTF-8"); foreach($messages as $message){ $pattern = "(".$message[0].")"

为了翻译一个网站,我在输出缓冲中使用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;
    }
以下是原始代码:

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_替换了stru_替换。 同样,它在本地服务器和测试服务器上运行良好,但在生产服务器上运行不好

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_替换是否可能取决于服务器设置

我明确表示,我不能用其他方式翻译网站。 我必须让它在生产服务器上工作

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;
    }

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

您有多确定这两个页面使用相同的编码?是的,html代码完全相同,两个服务器页面都编码为UTF-8。