0

アプリケーションの JSON 構造を作成したいので、コードを Web サーバーにアップロードすると、すべてが機能しました。突然、次の警告が表示されました。

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)); 
?>
4

4 に答える 4

2

curlHTTP 経由でコンテンツを取得するために使用することをお勧めします。を選択する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;
    }
于 2013-08-17T16:45:38.617 に答える
0

これは、Web サーバーの DNS サーバーまたはこのドメインのネームサーバーが安定していないことを意味します。Web サーバーが使用している DNS サーバーを確認してください。おそらく、GoogleのDNSサーバーに変更してください:8.8.8.8またはISPのDNSサーバー

ネームサーバーが安定していない場合は、ネームサーバープロバイダーに連絡するか、Amazon Route 53 サーバーに変更して再試行する必要があります

于 2013-08-17T16:41:39.117 に答える
0

テストに対応していることがわかっている Web サイトを使用してみてください。グーグルのように。

または、これが機能しない場合は、Curl を使用します。

于 2013-08-17T16:46:00.903 に答える
0

file_get_content を使用して Web アドレスを読み取るには、allow_url_fopenon に設定する必要があります。あなたはそれをチェックしましたか?

ホストされたサービスの php.ini にアクセスできない場合は、次を.htaccess使用してファイルから有効にすることができます。

php_value allow_url_fopen On
于 2013-08-17T16:49:59.513 に答える