以下代码是查询我正在构建为大学项目的搜索引擎的在线词库,但我遇到了file_get_contents
“无法打开流”的问题错误。当我发送词库时,词库无法识别,它会引发错误。我正在尝试编写一段忽略错误的代码,然后在没有信息的情况下继续。
$thesaurus_search="http://words.bighugelabs.com/api/2/0089388bb57f/".$this->formatted_query."/php";
$result_thesaurus=file_get_contents($thesaurus_search);
我试过了:
if (file_get_contents($thesaurus_search) != NULL)
{ // do stuff }
...但它不起作用,因为它仍然会返回某种字符串。
我可以做些什么来处理此类案件?
答案 0 :(得分:32)
如果您不希望file_get_contents
将 HTTP错误报告为PHP警告,那么这是使用流上下文执行此操作的 clean 方式(专门用于):
$context = stream_context_create(array(
'http' => array('ignore_errors' => true),
));
$result = file_get_contents('http://your/url', false, $context);
答案 1 :(得分:1)
最简单的解决方案,如果你只是纾困,那就是:
if (empty($thesaurus_search)) {
return;
} else {
//process with value
}
为了更全面地处理它,查看API,看起来你应该检查response header,例如:
$thesaurus_search="http://words.bighugelabs.com/api/2/0089388bb57f/".$this->formatted_query."/php";
$result_thesaurus=file_get_contents($thesaurus_search);
if ($http_response_header[0] = 'HTTP/1.1 200 OK') {
//code to handle words
} else {
// do something else?
}
答案 2 :(得分:0)
如果我理解正确,您正尝试对http://words.bighugelabs.com
进行API调用。
您需要cURL来实现这一点,所以如果您安装了cURL,那么此代码将适合您。
$ch = curl_init();
$thesaurus_search="http://words.bighugelabs.com/api/2/0089388bb57f/".$this->formatted_query."/php";
$options = array();
$options[CURLOPT_URL] = $thesaurus_search;
$options[CURLOPT_RETURNTRANSFER] = true;
curl_setopt_array($ch, $options);
// Print result.
print_r(curl_close($ch));
答案 3 :(得分:-1)
您可以尝试卷曲:
function curl_get_contents($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);
return $content;
}