2012-07-05 2 views
1

Win7-HUN, UTF8 PHP 파일. 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('őű'); 

이 보여주는 좋은 "오우"

나는 많은 다른 것들을 확인하기 원하기 때문에, "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.

예를 들어

: "álmos O 코벤 + 2" "álmos ö 코벤 2"

하지만 뭔가 내 코드에서 잘못된 것입니다. MultiByte 입력 및 UTF8 또는 16 XML이 있기 때문에 UTF8 문자를 사용하고 싶습니다. 그리고 일부 서버는 영어이고 일부는 헝가리어입니다 (인코딩이 다릅니다).

하지만 MB 문자로 작업하고 싶을 때 문제가 발생한다는 것은 흥미 롭습니다. 어쩌면 concatentation이 원인입니까?

이 주제에 대한 모든 발전에 대해 매우 감사드립니다.

감사합니다 : DD는

+0

무엇이 잘못 되었습니까? 그 결과는 무엇입니까? – deceze

+0

해석 할 수없는 문자가 있습니다. – durumdara

답변

2

당신은 아마 mb_ 기능에 대한 인코딩을 지정해야합니다.

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