function parseGoogleFinance() { if ( $f = @fopen("http://finance.google.com/finance", "r") ) { $html = ""; $retval = array( "indices" => array() , "currency" => array() , "summary" => array() ); $indices = array( "Dow" , "Nasdaq" , "S&P 500" ); $currency = array( "USD-Euro" , "USD-Yen" , "USD-GBP" ); while ( !feof($f) ) $html .= fread($f, 8192); fclose($f); $len = count($indices); for ($i = 0; $i < $len; $i++) { if ( preg_match("/\s+.*?". $indices[$i] ."<\/a><\/td>\s+(.*?)<\/span><\/td>\s+\s+(.*?)<\/span>\s+<\/td>\s+\s+(.*?)<\/span><\/td>\s+<\/tr>/i", $html, $reg) ) { $retval["indices"][] = array( "index" => $indices[$i] , "quote" => $reg[1] , "points" => $reg[2] , "percent" => $reg[3] ); } } // 10y bond if ( preg_match("/\s+10y bond<\/td>\s+(.*?)<\/td>\s+(.*?)<\/span><\/td>\s+(.*?)<\/span><\/td>\s+<\/tr>/i", $html, $reg) ) { $retval["currency"][] = array( "name" => "10y bond" , "rate" => $reg[1] , "increase" => $reg[2] , "percent" => $reg[3] ); } // currency exchange $len = count($currency); for ($i = 0; $i < $len; $i++) { if ( preg_match("/\s+". $currency[$i] ."<\/a><\/td>\s+(.*?)<\/td>\s+(.*?)<\/span><\/td>\s+(.*?)<\/span><\/td>\s+<\/tr>/i", $html, $reg) ) { $retval["currency"][] = array( "name" => $currency[$i] , "rate" => $reg[1] , "increase" => $reg[2] , "percent" => $reg[3] ); } } // sector summary if( $reg = preg_split("/ 

Sector Summary<\/h3>.*?<\/tr>/is", $html) ) { if ( $reg = preg_split("/

Top movers<\/h3>/im", $reg[1]) ) { if ( preg_match_all("/(.*?)<\/a><\/td>.*?(.*?%)<\/span>\s+<\/td>.*?<\/table>/is", $reg[0], $reg) ) { $len = count($reg[1]); for ($i = 0; $i < $len; $i++) $retval["summary"][] = array( $reg[1][$i] , $reg[2][$i] ); } } } return( $retval ); } return( null ); }