PHP如果文件获取内容失败,请改为执行此操作

PHP如果文件获取内容失败,请改为执行此操作,php,Php,我有一个使用免费Bing translator API翻译当前文本字符串的函数。我只是想确认一下,如果应用程序ID出现了任何问题或者出现了什么问题,或者我对请求进行了检查,我不希望出现大的错误 我现在掌握的代码是: $translate_feed = file_get_contents('http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=' . BING_APPID . '&text=' . urlencode(

我有一个使用免费Bing translator API翻译当前文本字符串的函数。我只是想确认一下,如果应用程序ID出现了任何问题或者出现了什么问题,或者我对请求进行了检查,我不希望出现大的错误

我现在掌握的代码是:

$translate_feed = file_get_contents('http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=' . BING_APPID . '&text=' . urlencode($text) . '&from=en&to=' . $to_lan . '');
$translate = simplexml_load_string($translate_feed);

return $translate[0];
我希望发生的是,如果有任何东西失败,那么如果我在URL中添加另一个字符使其无效,那么我希望它只返回
$text
,这样至少会显示一些内容


谢谢

你有没有试过故意失败,看看会发生什么

如果它是一个异常,只需捕获它并处理它

try{
    //enter code to catch
}catch(Exception $ex){
    //Process the exception
}
如果函数输出错误,只需@隐藏错误并手动处理$translate_feed或$translate的错误输出

您可以尝试故意失败,只需将一个无效URI传递给file\u get\u contents,然后强制将非XML或无效XML馈送给simplexml\u load\u string,以查看发生了什么。

如果(!$translate\u feed)返回“失败”

您可以这样做

if(@file_get_contents("yourFilePath.txt")){
     echo "success";
}
有一个变量正在本地范围中创建,我们可以使用它来检查从服务器返回的头。以下是我的实现:

public function getData($url)
{
    try {
        $response = @file_get_contents($url);
        if (isset($http_response_header)) {
            if (!in_array('HTTP/1.1 200 OK', $http_response_header) &&
                !in_array('HTTP/1.0 200 OK', $http_response_header)) {
                throw new \Exception('Server did not return success header!');
            }
        }
        return $response;
    } catch (\Exception $ex) {
        throw new TransportException($ex->getMessage(), $ex->getCode(), $ex);
    }
}

是的,我得到了两个错误:未能打开流:php_network_getaddresses:getaddrinfo失败:提供了nodename或servname,或者在中未知,您可以在函数前面使用@,并使用var_dump()检查函数输出的数据在继续之前,最后使用var_dump捕获错误…这是不正确的,没有异常,函数返回
false
我尝试了成功的答案。它不起作用,最终做到了这一点。
/*
It's a modified file_get_contents()
get_contents(filename, use_include_path, context, offset, maxlen)
*/
function get_contents($url, $u = false, $c = null, $o = null) {
    $headers = get_headers($url);
    $status = substr($headers[0], 9, 3);
    if ($status == '200') {
        return file_get_contents($url, $u, $c, $o);
    }
    return false;
}

echo get_contents('https://batas.kz/');
if(@file_get_contents("yourFilePath.txt")){
     echo "success";
}
public function getData($url)
{
    try {
        $response = @file_get_contents($url);
        if (isset($http_response_header)) {
            if (!in_array('HTTP/1.1 200 OK', $http_response_header) &&
                !in_array('HTTP/1.0 200 OK', $http_response_header)) {
                throw new \Exception('Server did not return success header!');
            }
        }
        return $response;
    } catch (\Exception $ex) {
        throw new TransportException($ex->getMessage(), $ex->getCode(), $ex);
    }
}