2011-09-06 3 views
0
$language = file_get_contents('http://api.microsofttranslator.com/V2/Ajax.svc/Detect?appid=APPID&text=hello'); 

$language = str_replace('"', '', $language); 

if($language != 'en') 
{ 
    echo 'not english'; 
} 
{ 
    echo 'english'; 
} 

그래서 코드에서 발생하는 위의 그때 인용 부호를 제거하고 en 동일한 경우 비교, file_get_contents 출력됩니다 "en"입니다. 그러나 위의 코드에서의 문제점은 인데도 not english을 출력한다는 것입니다.빙의 번역 API를 통해 검색된 언어가 "EN"과 같은지 테스트하려면 어떻게해야합니까?

내가 뭘 잘못하고 있을지 모르겠다. $language(string)$language 문자열로 변환하려고 시도했지만 해결되지 않았습니다.

+0

'이전과 이후 'str_replace()'? – Rijk

+0

'string (7) ""en ""string (5) "ko"' –

+0

나머지 3 문자는 무엇이 될 수 있습니까? –

답변

3

Bing에서 얻은 결과에는 BOM 또는 반향시 표시되지 않는 바이트 순서 표시가 포함되어 있습니다.

시도,이 기능을 BOM을 제거하려면 :

function removeBOM($str = "") { 
    if (substr($str, 0, 3) == pack("CCC",0xef,0xbb,0xbf)) { 
     $str=substr($str, 3); 
    } 
    return $str; 
} 

그래서 코드의 3 행은 다음과 같습니다 위해서 var_dump`의 출력 ($ 언어) 무엇

$language = removeBOM(str_replace('"', '', $language)); 
+0

그게 효과가! 고마워, 타비! –

+0

가입 해 주셔서 감사합니다. :) –

+1

당신을 진심으로 환영합니다! 나는이 사이트에서 많은 도움을 받았으므로 오늘은 마침내 조금 줄이기 위해 계정을 만들기로 결정했습니다. :) –

관련 문제