2014-09-20 57 views
0

我正在尝试使用PHP中的Google API制作货币转换器,但它给了我一个空白页。USD to GBP到PHP的货币转换器

的index.php:

<div id='output'></div> 
<form action='convert.php' method='post'> 
Amount: <input name='amount' type='text'><br/> 
From: <select name='from'> 
     <option value='USD'>USD</option> 
     <option value='GBP'>GBP</option> 
     </select><br/> 
To: <select name='to'> 
     <option value='GBP'>GBP</option> 
     <option value='USD'>USD</option> 
     </select><br/> 
<input name='submit' type='submit' value='submit'> 
</form> 

convert.php:

<?php 

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); 
} 

if(!empty($_POST) && isset($_POST['submit'])) { 
    $output = currency($_POST['from'], $_POST['to'], $_POST['amount']); 
    echo "<script>document.getElementById('output').innerHTML = '<p>" . $output . "</p>'></script>"; 
} 

?> 
+0

问题是什么? – 2014-09-20 15:40:23

+0

...我如何使它工作? – James 2014-09-20 15:43:21

+0

它不起作用?你期望什么,你会得到什么? – 2014-09-20 16:15:39

回答

0

它,因为你发布的数据到一个新的页面是空白。

的index.php你也行

<div id='output'></div> 

这是你所期望的输出到结束。但是,当你推送表单时,你实际上会进入一个完全不同的页面。如果你看看网址,它现在结束于convert.php

如果你点击submit并查看页面的源代码,它实际上包含了你告诉它的内容。

只是这种替换output.php线14:

echo $output; 

你会看到你的结果即可。

由于您预计输出与表单所在的页面相同,因此您可能需要使用AJAX进行调查。

或者,你可以把逻辑得到的结果在同一个页面做类似如下:

<?php 

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); 
} 

if(!empty($_POST) && isset($_POST['submit'])) { 
    $output = currency($_POST['from'], $_POST['to'], $_POST['amount']); 
} 

?> 

<div id='output'><?php if(isset($output)) { echo $output; } ?></div> 
<form action='index.php' method='post'> 
Amount: <input name='amount' type='text'><br/> 
From: <select name='from'> 
     <option value='USD'>USD</option> 
     <option value='GBP'>GBP</option> 
     </select><br/> 
To: <select name='to'> 
     <option value='GBP'>GBP</option> 
     <option value='USD'>USD</option> 
     </select><br/> 
<input name='submit' type='submit' value='submit'> 
</form> 
+0

我用index.php替换了这个,当我提交表单时,我仍然收到一个空白页。 – James 2014-09-20 16:02:06

+0

如果你做“查看源代码”,空白页面的源代码是什么? – 2014-09-20 16:03:35

+0

好吧,这很奇怪......我在我的网站上嵌入了一个带有iFrame的表单,转换器完美地工作在那里。但是当我直接访问PHP文件时,它不会。好吧。 – James 2014-09-20 16:17:01

0

您需要在通过下面击中了谷歌的网址,并获取函数的参数货币转换响应。

参数:
$from_Currency =您想在其中响应。
$to_Currency =您需要从中转换。
$amount =您想要转换的金额。

<?php 

function get_currency($from_Currency, $to_Currency, $amount) { 

$amount = urlencode($amount); 
$from_Currency = urlencode($from_Currency); 
$to_Currency = urlencode($to_Currency); 

$url = "http://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$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('bld>', $rawdata); 
$data = explode($to_Currency, $data[1]); 
return round($data[0], 2); 
} 

// Call the function to get the currency converted 
echo get_currency('USD', 'INR', 1); 

?> 

响应:

65.24(按照美元今天率)

0

谷歌已经更新了链接,即它已被移动到一个新的站点。因此,这可能会有所帮助:

function currencyConvert($from,$to,$amount){ 
    $url = "https://finance.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); 

     $rawdata = str_replace('</span>','',str_replace('<span class="bld">','',$response)); 
    list(,$val) = explode("bld>",$rawdata); 
    list($raw2,) = explode("<input",$val); 
    return (float) $raw2; 
} 

调用这个函数:

echo currencyConvert('USD','NPR',1); 

这将$ 1转换为尼泊尔卢比。

类似的可以用于美元到英镑。