Win7-HUN,UTF8 PHP文件。
function Test($Msg){
$Result = "";
$ReplFrom = "ő";
$ReplTo = "ö";
for($i=0; $i<mb_strlen($Msg); $i++){
$c = mb_substr($Msg, $i, 1);
echo($c);echo("<br>");
}
}
Test('őű');
这显示出良好的效果:“őű”
我想用“ö”替换“ő”,但要逐一替换,因为我想检查很多其他事情。
function Test($Msg){
$Result = "";
$ReplFrom = "ő";
$ReplTo = "ö";
for($i=0; $i<mb_strlen($Msg); $i++){
$c = mb_substr($Msg, $i, 1);
$add = $c;
$h = mb_substr($ReplFrom, 0, 1);
if ($c == $h) {
$add = $ReplTo;
echo("found");
}
$Result = $Result.$add;
}
return $Result;
}
有趣的是找到所有字符,结果是错误的。
简化为concat:
$what = 'ő';
$replto = "ö";
echo($what.$replto);
这很好。
$what = mb_substr('ő', 0, 1);
$replto = mb_substr("ö", 0, 1);
echo($what.$replto);
这是错误的。
我做错了什么? 我想介入每个MB角色,并检查它。如果其中一些需要,我必须更换。 如果其中一些是非法的,请用“”替换它们。等等。 并在最后连接到一个字符串。
例如: “álmosőkörben+ 2” “álmosökörben2”
但是我的代码出了点问题。 我想使用UTF8字符,因为我有MultiByte输入,以及UTF8或16 XML。 有些服务器是英语的,有些是匈牙利语(编码不同)。
但有趣的是,当我想使用MB字符时出现问题。 也许连接会导致这个?
非常非常感谢这个主题的每一次进步!
问候: DD
答案 0 :(得分:2)
您可能需要为mb_ functions指定编码。
$c = mb_substr($Msg, $i, 1,'utf-8');