使用当前货币转换率动态更新表格

时间:2013-02-13 20:08:57

标签: php html-table

修改

嗯,由于吉米的链接,我得到了它。这是我用来转换的代码,以防其他人想要尝试同样的事情。这种方法最适用于您知道基本上已修复或不经常更改的数字。请确保删除///表示的注释,以便在使用下面的代码时没有浮动文本。另请注意,结果是近似的,因此您可能希望添加一个尽可能多的部分。责任的东西。

从Google API获取数据所需的代码:

<?php

function currency($from_Currency,$to_Currency,$amount) {
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$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'];
return round($var,9); ///the 9 indicates how many decimal points you want. I set it at the API's limit of 9
}
?>

<?php ///turns the exchange rate into a php variable so we can use it later. 
$cad = currency("USD","CAD",1) ; ///The currency code converting from, the currency code converting to, and amount you want to convert. 
?> ///Best use 1 so for a simpler equation. (base amount * exchange rate = how much you'll need)

<?php 
$gbp = currency("USD","GBP",1) ; 
?>

包含内容的表格:

<table border="1" style="margin-left: 35px; width:400px;">
<tbody>
<tr>
<td style="text-align:left; width:190px"><strong>Currency</strong></td>
<td style="text-align: center;"><strong>USD</strong></td>
<td style="text-align: center;"><strong>CAD</strong></td>
<td style="text-align: center;"><strong>GBP</strong></td>
</tr>

<tr>
<td style="text-align:left;">Conversion</td>
<td style="text-align: center;">$5000</td> ///the base number I will be using to make the conversion.

<td style="text-align: center;">$<?php 
$basecad = $cad * 5000; ///multiply the base value (in this case $5000) by the conversion ratio stored in our php variable
$basecad = round($basecad, 0); ///rounds it up to 0 decimals for cleanliness
$basecad = number_format($basecad); ///formats it to have commas (1,000 vs 1000)
echo $basecad; ///prints result
?></td>

<td style="text-align: center;">$<?php  ///repeat as necessary for additional currencies or lines
$basegbp = $gbp * 5000;
$basegbp = round($basegbp, 0);
$basegbp = number_format($basegbp);
echo $basegbp;
?></span></td>

</tr>
</tbody>
</table>

原始问题

所以,对于我正在更新的公司网站,我有一个奇怪而有趣的想法。页面详细信息包括几个不同国家/地区之间的货币汇率,以帮助进行旅行计划。我想出的想法是根据页面加载时的速率更新汇率。这个概念本身类似于我以前做过的事情,但这次我必须使用由第三方生成的iframe。 iframe本身基本上只是http://themoneyconverter.com/WebTools.aspx的货币表。它将信息输出到表格中,每个表格都包含任何货币汇率的ID。我现在的问题是如何从iframe中提取信息并将其转换为我可以在父页面中使用的PHP变量。之后,它是简单的PHP计算输出每个费用结果。主要问题来自于我无法修改iframe中的信息。我已经深入研究了互联网但除了如何将PHP变量放入iframe之外找不到任何东西,而不是把它拿出来。下面是iframe的示例,即我想要提取的部分。任何帮助,无论是可能还是不可能,都将非常感激。

我将其提取到的实际表只是一个HTML表。我将添加一个基本算法来转换每个单元格的货币(即$ var1 x $ iframecvar1)。如果您需要更多信息,请提前告知我并提前致谢。

<table summary="Exchange Rates for Japanese Yen" id="major-currency-table">...
<td><div class="tmc i-USD"> </div></td> 
<td><a target="_blank" ,="" title="United States Dollar" href="/USD/Exchange_Rates_For_US_Dollar.aspx">USD</a></td> 
<td id="USD">0.01070</td>

2 个答案:

答案 0 :(得分:1)

在您的特定情况下,iframe正在从Google加载jQuery并包含来自themoneyconverter.com的Google Analytics - 因此,只需在您自己的页面上回显这一点就可能会导致意外结果。

也就是说,网页抓取可能会变得棘手,但这是一个简单的工作流程 - 在PHP中获取数据并使用file_get_contents http://php.net/manual/en/function.file-get-contents.php

转换为var
<?php
$file = file_get_contents('http://themoneyconverter.com/USD/RateTicker.aspx');
//echo the file
echo $file;

如果你想更复杂的内容抓取,我建议Matthew Turland的博客或他关于这个主题的书:

http://matthewturland.com/tag/web-scraping/

答案 1 :(得分:1)

我不知道你可以改变你正在使用的页面或者该页面的样子,我想建议一种从iframe获取汇率的替代方案。

This script效果很好。

<?php
function currency($from_Currency,$to_Currency,$amount) {
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$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'];
return round($var,3);
}

echo currency("GBP","USD",1); 
?>

如果这不能解决您的问题,可能会对其他人有用。