Конвертер валют Google изменил свой URL, но не получил того же результата
У меня есть следующий код (ниже), и я использовал версию iGoogle.
$url = 'http://www.google.com/ig/calculator?hl=en&q=' . $amount . $from_Currency . '=?' . $to_Currency;
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$rawdata = curl_exec($ch);
curl_close($ch);
$data = explode('"', $rawdata);
$data = explode(' ', $data[3]);
$var = $data[0];
НО, посмотрев, они используют другой URL:
'http://www.google.com/finance/converter?hl=en&a=' . $amount . '&from=' . $from_Currency . '&to=USD';
Но простое изменение URL-адреса не возвращает требуемого результата, к которому я привык.
Теперь все, что я хотел бы получить, это
http://www.w3.org/TR/html4/strict.dtd
ИТАК, кто-нибудь работал над этим последним URL-адресом конвертера валют или у кого есть какие-либо идеи. Или замена с использованием PHP
4 answers
Благодаря более глубокому изучению и переформулировке проблемы я нашел этот пост. Так что в некотором смысле это дубликат. но вот в чем вопрос:
Нужен API для конвертации валюты
Я использовал @hobailey answer для временного исправления, пока я не смогу обновить его до другой версии или Google не решит создать правильный api.
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency");
$get = explode("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]);
Использование XPath:
function currency($from, $to, $amount)
{
$content = file_get_contents('https://www.google.com/finance/converter?a='.$amount.'&from='.$from.'&to='.$to);
$doc = new DOMDocument;
@$doc->loadHTML($content);
$xpath = new DOMXpath($doc);
$result = $xpath->query('//*[@id="currency_converter_result"]/span')->item(0)->nodeValue;
return str_replace(' '.$to, '', $result);
}
echo currency('USD', 'EUR', 1); // returns 0.7216
Я создал класс для более простого подключения к Google здесь.
Я надеюсь, что это должно облегчить некоторые аспекты!
Редактировать: Я просто знал, что сервис Google был закрыт в ноябре 2013 года.
Мне придется это изменить!
Отредактируйте еще раз: Я изменил Api Google на Api Yahoo, и он отлично работает!
Я нашел другое решение. Это также будет работать, если ваш IP-адрес сервера не позволяет использовать сервис Google.
<?php
$from_currency = 'USD';
$to_currency = 'INR';
$amount = 1;
$results = converCurrency($from_currency,$to_currency,$amount);
$regularExpression = '#\<span class=bld\>(.+?)\<\/span\>#s';
preg_match($regularExpression, $results, $finalData);
echo $finalData[0];
function converCurrency($from,$to,$amount){
$url = "http://www.google.com/finance/converter?a=$amount&from=$from&to=$to";
$request = curl_init();
$timeOut = 0;
curl_setopt ($request, CURLOPT_URL, $url);
curl_setopt ($request, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($request, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
curl_setopt ($request, CURLOPT_CONNECTTIMEOUT, $timeOut);
$response = curl_exec($request);
curl_close($request);
return $response;
}
?>
Ссылка на источник Пошаговое ведение блога