Php str_replace behviour在两台服务器上不同
为了翻译一个网站,我在输出缓冲中使用str_replace。 它在本地服务器和测试服务器上运行良好,但在生产服务器上完全失败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].")"
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。