2012-07-05 53 views
1

Win7-HUN,UTF8 PHP文件。PHP多字節字符串concat和比較?

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

這顯示出良好:「OU」

我想更換「O」與「ö」,而是一個接一個,因爲我要檢查很多其他的事情。

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字符,並檢查它。如果其中一些需要,我必須更換。 如果其中一些是非法的,請用「」替換它們。等。 並在最後concat到一個字符串。

例如: 「ALMOSØkörben+ 2」 「ALMOSökörben2」

但什麼是錯在我的代碼。 我想使用UTF8字符,因爲我有MultiByte輸入,而UTF8或16 XML。 而一些服務器是英語,一些匈牙利語(編碼是不同的)。

但有趣的是,當我想要使用MB字符時出現錯誤。 也許聯合導致這種情況?

非常感謝這個主題的每一個進步!

問候: DD

+0

這究竟是什麼錯誤的東西呢?結果是什麼? – deceze

+0

我得到的不可理解的人物。 – durumdara

回答

2

您可能需要爲MB_函數指定編碼。

$c = mb_substr($Msg, $i, 1,'utf-8');