1

Win7-HUN、UTF8PHPファイル。

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文字に足を踏み入れて確認したい。それらのいくつかが必要な場合、私は交換する必要があります。それらの一部が違法である場合は、「」に置き換えてください。などそして最後に1つの文字列に連結します。

例:"álmosőkörben+2""álmosökörben2"

しかし、私のコードに何か問題があります。マルチバイト入力とUTF8または16XMLがあるため、UTF8文字を使用したいと思います。また、一部のサーバーは英語で、一部はハンガリー語です(エンコードは異なります)。

しかし、MB文字を操作したいときに何かがおかしいのは興味深いことです。たぶん、連結がこれを引き起こしますか?

非常に-このテーマのすべての進歩に感謝します!

よろしく:dd

4

1 に答える 1

2

おそらくmb_関数のエンコーディングを指定する必要があります。

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