PHP-код для анализа информации о погоде Yahoo не работает при отрицательных градусах


У меня есть следующий код для анализа информации о погоде Yahoo:

$xml = simplexml_load_file('http://weather.yahooapis.com/forecastrss?w=868274&u=c');
    $weatherInfo = $xml->channel->item->description;
    $imagePattern = '/src="(.*?)"/i';
    preg_match($imagePattern, $weatherInfo, $matches);
    $imageSrc = $matches[1];
    $degreesPattern = '/.*?, (\d+) C/i';
    preg_match($degreesPattern, $weatherInfo, $matches);
    $degrees = $matches[1];
echo $degrees;

Как я могу изменить синтаксический анализатор, чтобы он работал с отрицательными степенями?

Спасибо.

Author: Psyche, 2012-12-10

2 answers

Сделайте тире необязательным:

$degreesPattern = '/.*?, (-?\d+) C/i';
                          ^^

Вы можете видеть из этой демонстрации , что она выводит:

-1
 4
Author: nickb, 2012-12-10 13:28:14

Это хорошо работает с codeigniter2.1.4 вставить в файл представления.прямой

<?php
// weather City qalat-dizah
$xml = simplexml_load_file('http://weather.yahooapis.com/forecastrss?w=1977965&u=c');
    $weatherInfo = $xml->channel->item->description;
    $imagePattern = '/src="(.*?)"/i';
    preg_match($imagePattern, $weatherInfo, $matches);
    $imageSrc = $matches[1];
     echo img($imageSrc) .'<br/>';
    $degreesPattern = '/.*?, (-?\d+) C/i';
    preg_match($degreesPattern, $weatherInfo, $matches);
    $degrees = $matches[1];
  echo  $degrees .'<br/>';
// end
?>
 1
Author: user2698670, 2013-12-26 11:44:47