function quote_xe_currency($to, $from = DEFAULT_CURRENCY) { $url = 'http://www.xe.net/ucc/convert.cgi'; $data = 'Amount=1&From=' . $from . '&To=' . $to; // check via file() ... may fail if php file Wrapper disabled. $page = @file($url . '?' . $data); if (!is_object($page) && function_exists('curl_init')) { // check via cURL instead. May fail if proxy not set, esp with GoDaddy. $page = doCurlCurrencyRequest('POST', $url, $data); $page = explode("\n", $page); } if (is_object($page) || $page != '') { $match = array(); preg_match('/[0-9.]+\\s*' . $from . '\\s*=\\s*([0-9.]+)\\s*' . $to . '/', implode('', $page), $match); if (sizeof($match) > 0) { return $match[1]; } else { return false; } } }
function quote_cbr_currency($code, $base = DEFAULT_CURRENCY) { static $rateCacheCBR = false; if (!$rateCacheCBR) { $rateCacheCBR = array(); $rateCacheCBR['RUR'] = $rateCacheCBR['RUB'] = 1; $url = 'http://www.cbr.ru/scripts/XML_daily.asp'; $data = ''; // check via file() ... may fail if php file Wrapper disabled. $page = @file($url . '?' . $data); if (!is_array($page) && function_exists('curl_init')) { // check via cURL instead. May fail if proxy not set, esp with GoDaddy. $page = doCurlCurrencyRequest('GET', $url, $data); $page = explode("\n", $page); } if (is_array($page) || $page != '') { $page = implode('', $page); preg_match_all("|<CharCode>(.*?)</CharCode>|is", $page, $CharCode); preg_match_all("|<Nominal>(.*?)</Nominal>|is", $page, $Nominal); preg_match_all("|<Value>(.*?)</Value>|is", $page, $Value); // echo '<pre>';var_export($CharCode[1]);echo '<pre>'; // echo '<pre>';var_export($Nominal[1]);echo '<pre>'; // echo '<pre>';var_export($Value[1]);echo '<pre>'; for ($i = 0, $n = sizeof($CharCode[1]); $i < $n; $i++) { $Value[1][$i] = str_replace(',', '.', $Value[1][$i]); // echo $CharCode[1][$i] . ' ' . $Nominal[1][$i] . ' ' . $Value[1][$i] . ' ' . $Value[1][$i]/$Nominal[1][$i] . '<br />'; $rateCacheCBR[$CharCode[1][$i]] = $Value[1][$i] / $Nominal[1][$i]; } // echo '<pre>';var_export($rateCacheCBR);echo '<pre>'; // die; } } // echo '<pre>';var_dump($code, isset($rateCacheCBR[$code]), $base, isset($rateCacheCBR[$base]));echo '<pre>'; if (isset($rateCacheCBR[$code]) && isset($rateCacheCBR[$base])) { $rate = round($rateCacheCBR[$base] / $rateCacheCBR[$code], 4); return (string) $rate; } else { return false; } }