4

Yahoo Weather Info を解析する次のコードがあります。

$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;

負の度数で動作するようにパーサーを変更するにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

4

ダッシュをオプションにします。

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

このデモから、次のように表示されることがわかります。

-1
于 2012-12-10T13:28:14.543 に答える
1

これは、codeigniter2.1.4 ビュー ファイル .direct への貼り付けでうまく機能しています。

<?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
?>
于 2013-12-26T11:42:09.710 に答える