For future reference, I fixed it by adjusting the code in my initial post to use
value="(-?[0-9\.]+)"
This allowed the negative character to be displayed.
In the end though, I found an easier way to get the values via XML
#!/usr/bin/php
#query weather data from wunderground xml for use with mrtg / rrdtool graphing utilities
<?php
//Get the XML document loaded into a variable
$ch = curl_init("http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=80013");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$url = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($url);
echo $xml->temp_f."\n";
echo $xml->windchill_f."\n";
?>