我想为我的应用程序创建一个JSON结构,所以我将我的代码上传到网络服务器,一切正常。突然,它显示了这个警告:
Warning: file_get_contents(): Couldn't resolve host name in /home/u815921584/public_html/slideshow.php on line 15
Warning: file_get_contents(http://www.webpage.com): failed to open stream: operation failed in /home/u815921584/public_html/slideshow.php on line 15
我认为问题出在服务器端,所以我在互联网上研究了这个问题,我发现可能不允许使用fopen,但事实是,因为这段代码工作了好几次。据说问题必须与某些服务器端设置有关(我无法真正修改)。
这是代码:
$fileInString = file_get_contents("http://www.webpage.com");
$divStart = "<div id=\"featured\">";
$divEnd = "</div>";
$imgStart = "<img src='";
$imgEnd = "'";
$currentPoint = 0;
$tomb = array();
/* Parsing */
// Parsing image
$currentPoint = strpos($fileInString, $divStart, $currentPoint);
$currentPoint += (strlen($divStart)) ;
$endPoint = strpos($fileInString, $divEnd, $currentPoint);
$img_text = substr($fileInString, $currentPoint, $endPoint - $currentPoint);
$currentPoint = $endPoint + strlen($divEnd);
// Subparsing image
$innerPoint = strpos($img_text, $imgStart, 0);
$innerPoint += strlen($imgStart);
$innerEndPoint = strpos($img_text, $imgEnd, $innerPoint);
$img_1 = "http://www.webpage.com".substr($img_text, $innerPoint, $innerEndPoint - $innerPoint);
$innerEndPoint += strlen($imgEnd);
$innerPoint = strpos($img_text, $imgStart, $innerEndPoint);
$innerPoint += strlen($imgStart);
$innerEndPoint = strpos($img_text, $imgEnd, $innerPoint);
$img_2 = "http://www.webpage.com".substr($img_text, $innerPoint, $innerEndPoint - $innerPoint);
$innerEndPoint += strlen($imgEnd);
$innerPoint = strpos($img_text, $imgStart, $innerEndPoint);
$innerPoint += strlen($imgStart);
$innerEndPoint = strpos($img_text, $imgEnd, $innerPoint);
$img_3 = "http://www.webpage.com".substr($img_text, $innerPoint, $innerEndPoint - $innerPoint);
$innerEndPoint += strlen($imgEnd);
$tomb[0] = array("img1" => $img_1, "img2" => $img_2, "img3" => $img_3);
echo str_replace('\/','/',json_encode($tomb));
?>
答案 0 :(得分:2)
我建议您使用curl
通过HTTP获取内容。因为如果选择curl
,则可以配置所有HTTP头,超时等。它比file_get_contents
function get($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //set url
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // get content as string
$data = curl_exec($ch); //execute
curl_close($ch); // close hander
return $data;
}
答案 1 :(得分:0)
这意味着,您的Web服务器的DNS服务器或此域的名称服务器不稳定。 请检查您的Web服务器正在使用的DNS服务器。也许将其更改为Google的DNS服务器:8.8.8.8或您的ISP的DNS服务器
如果名称服务器不稳定,您需要联系您的名称服务器提供商或将其更改为Amazon Route 53服务器并再试一次
答案 2 :(得分:0)
尝试使用已知可以测试的网站。像谷歌一样。
如果这个dosnt有效,可以使用Curl。
答案 3 :(得分:0)
要使用file_get_content读取网址allow_url_fopen
必须设置为开启。你检查过了吗?
如果您无法访问托管服务上的php.ini,可以使用
从.htaccess
文件启用它
php_value allow_url_fopen On