1

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;

} 

有趣的是发现所有字符,结果是错误的。

简化为连接:

 $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örben 2”

但是我的代码有问题。我想使用 UTF8 字符,因为我有 MultiByte 输入和 UTF8 或 16 XML。有些服务器是英语的,有些是匈牙利语的(编码不同)。

但有趣的是,当我想使用 MB 字符时出现问题。也许连接会导致这种情况?

非常非常感谢这个主题的每一个进步!

问候:dd

4

1 回答 1

2

您可能需要为 mb_ 函数指定编码。

$c = mb_substr($Msg, $i, 1,'utf-8');
于 2012-07-05T07:28:21.250 回答