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';
}

所以,上面代码中发生的是file_get_contents输出"en",然后我删除引号并比较它是否等于en。但是上面代码的问题是它会输出not english,即使'en' != 'en'.

知道我做错了什么吗?我也尝试转换$language为 string (string)$language,但这也没有解决。

4

1 回答 1

3

您从 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));
于 2011-09-06T13:42:46.690 回答