注意:未定义的偏移量:第17行的C:\ xampp \ htdocs \ weather-scrapper \ forecast.php中的1

时间:2019-03-17 06:39:22

标签: php html weather

使用下面的代码,我遇到了一个问题,但我不知道如何解决。我正在尝试从天气网站上爆炸字符串

<?php
$scrapedString       = '3 day weather forecast summary:</br><span class="read-more-small"><span class="read-more-content"> <span class="phrase">';
$secondScrapedString = '</span></span></span>';

$file_headers[] = "";

if ($_GET['city']) {

    $city         = str_replace(' ', '', $_GET['city']);
    $forecastPage = file_get_contents("https://www.weather-forecast.com/locations/" . $city . "/forecasts/latest");
    if ($file_headers[0] == 'HTTP/1.1 404 not found') {
        $exists = false;
    } else {

        $pageArray = explode($scrapedString, $forecastPage);

        $secondPageArray = explode($secondScrapedString, $pageArray[1]);

        $weatherResult = $secondPageArray[0];   
    } 
}
?>

1 个答案:

答案 0 :(得分:1)

看起来没有设置$pageArray[1]

只需将其包装在if中,如果未设置,则不会发生此错误。

$secondScrapedString = ''; 
$file_headers[] = ""; 
if($_GET['city']){ 
  $city = str_replace(' ', '', $_GET['city']); 
  $forecastPage = file_get_contents("https://www.weatherforecast.com/locations/".$city."/forecasts/latest");
  if($file_headers[0] == 'HTTP/1.1 404 not found'){ 
    $exists = false; 
  } else {
     $pageArray = explode( $scrapedString, $forecastPage)
     if(isset($pageArray[1])){
       $secondPageArray = explode($secondScrapedString, $pageArray[1]); 
       if(isset($secondPageArray[0])){
         $weatherResult = $secondPageArray[0]; 
       }
     }
  } 
} 
?>

这样做似乎可以消除您的错误,但是这里似乎比未定义的索引还多。

  • $file_headers会填充到哪里,可能应该检查是否在$forecastPage中返回了数据
  • $exists似乎没有任何作用
  • 深入2个级别似乎有些奇怪,preg_split
  • $scrapedString未定义

但是,仅此而已,并不是我不能确定的所有代码。

无论哪种方式,希望对您有所帮助,