PHP如果文件获取内容失败,请改为执行此操作
我有一个使用免费Bing translator API翻译当前文本字符串的函数。我只是想确认一下,如果应用程序ID出现了任何问题或者出现了什么问题,或者我对请求进行了检查,我不希望出现大的错误 我现在掌握的代码是: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(
$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);
}
}