Это не пусто, а ошибка в вашем скрипте. Вероятно, это пусто, потому что вы отключите отчет об ошибках.
От этой линии:
preg_match('/3 Day Weather Forest Summary:<\/b><span class="phrase">(.*?)</span>',$contents, $matches);
Вы забыли, чтобы избежать /
на </span>
(она должна быть <\/span>
); и окончательный разделитель /
для preg_match. (Там есть опечатка, это должен быть «Прогноз» не Лес.)
Но даже вы исправляете эту ошибку, вы не получите то, что ищете, глядя на исходный код html из прогноза погоды, вы пропустите <span class="read-more-small"><span class="read-more-content">
после <\/b>
.
Таким образом, это должно быть так:
<?php
$city=$_GET['city'];
$city=str_replace(" ","",$city);
$contents=file_get_contents("http://www.weather-forecast.com/locations/".$city."/forecasts/latest");
preg_match('/3 Day Weather Forecast Summary:<\/b><span class="read-more-small"><span class="read-more-content"> <span class="phrase">(.*?)<\/span>/',$contents, $matches);
echo $matches[1];
?>
Или
Вы можете использовать preg_match_all
, чтобы получить все три Прогноз погоды Сводка (1 - 3 дня, 4 - 7 день, и 7 - 10 дней), заменив всю вашу линию preg_match
на:
preg_match_all('/<span class="phrase">(.*?)<\/span>/',$contents, $matches);
и эхо ваших данных:
$matches[0][0]
за 1-3 дня,
$matches[0][1]
на 4-7 дня,
$matches[0][2]
на 7-10 день.
Вы пробовали отладить его? что такое $ city? что вы получаете в $ content? etc – pvg
blank может означать ошибки синтаксиса http://php.net/manual/en/function.error-reporting.php –