ugrás a tartalomhoz

Megőrjítenek az ékezetek! MB_ és tsai

durumdara · 2012. Júl. 5. (Cs), 08.54
Sziasztok!

Win7 HUN, UTF8 fájl.

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('őű');

Ez szépen kiírja: "őű"

Szeretném cserélni az "ő"-t "ö"-re egyenként, mert mást is akarok vizsgálni rajta...

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;

}

Érdekes módon mindkettőt megtalálja, valamint azonnal krikszkraksz az eredmény...

Egyszerűsítve:
$what = 'ő';
$replto = "ö";
echo($what.$replto);

Így jó.

$what = mb_substr('ő', 0, 1);
$replto = mb_substr("ö", 0, 1);
echo($what.$replto);

Ez nem.

Vagyis a fő kérdések: mit értek félre?
Nekem multibájtos lesz a bemenetem, UTF8 XML-ből veszem majd az eredmény.
De érdekes módon valami elszúródik, amint multibájtos karakterekkel akarok műveleteket csinálni...
Vagy csak az összefűzés ront el valamit?

Minden segítséget köszönök!

Üdv: dd
 
1

Add meg utolsó paraméterben

szjanihu · 2012. Júl. 5. (Cs), 11.43
Add meg utolsó paraméterben az encoding-ot (utf-8).