1

編集

さて、私はジミーのリンクのおかげでそれを機能させました。これは、他の誰かが同じことを試したい場合に備えて、変換に使用しているコードです。これは、基本的に固定されているか、頻繁に変更されないことがわかっている番号で最適に機能します。以下のコードを使用する場合にフローティングテキストが表示されないように、///で示されているようにメモを削除してください。また、結果は概算であるため、同じくらい多くのことを示すセクションを追加することをお勧めします。責任のもの。

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>
4

2 に答える 2

1

特定のケースでは、iframeはGoogleからjQueryを読み込んでおり、themoneyconverter.comからのGoogle Analyticsが含まれています。したがって、これを自分のページにエコーするだけで、望ましくない結果が生じる可能性があります。

とはいえ、Webスクレイピングには注意が必要ですが、ここに簡単なワークフローがあります。PHPでデータをフェッチし、file_get_contents http://php.net/manual/en/function.file-get-contents.phpを使用して変数にキャストします。

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

より洗練されたコンテンツのスクレイピングが必要な場合は、MatthewTurlandのブログまたはこのテーマに関する彼の本をお勧めします。

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

于 2013-02-13T20:12:57.617 に答える
1

作業しているページをどの程度変更できるか、またはそのページがどのように見えるかを知らなくても、iframe から為替レートを取得する代わりの方法を提案したいと思います。

このスクリプトは非常にうまく機能します。

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

これで問題が解決しない場合は、他の人に役立つかもしれません。

于 2013-02-13T20:45:59.013 に答える