Как я могу проверить, чтобы обнаруженный язык через API перевода Bing был равен "EN"? - PullRequest
0 голосов
/ 06 сентября 2011
$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';
}

Итак, в приведенном выше коде file_get_contents выведет "en", затем я удалю кавычки и сравню, если оно равно en.Но проблема с кодом выше в том, что он выдаст not english, хотя 'en' != 'en'.

Есть идеи, что я могу делать неправильно?Я также пытался преобразовать $language в строку (string)$language, но это тоже не помогло.

1 Ответ

3 голосов
/ 06 сентября 2011

Результат, который вы получаете от Bing, содержит BOM или метку порядка байтов, которая невидима при отражении.

Чтобы удалить BOM, попробуйте эту функцию:

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

Таким образом, строка 3 вашего кода будет:

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