iOS和php货币转换器

时间:2017-09-20 10:14:57

标签: php

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]); // line 21

return round($data[0], 2);

}

现在我收到此错误

  

注意:未定义的偏移:1英寸    /storage/ssd1/708/2065708/public_html/function.php 在线    21

1 个答案:

答案 0 :(得分:0)

此行会将$rawdata的内容展开为数组。

$data = explode('bld>', $rawdata);

但如果$rawdata不包含'bld>',则整个字符串将返回$data[0],并且不会有$data[1]。因此错误Undefined offset: 1

您可以检查$rawdata是否实际包含'bld>'与

if (substr_count($rawdata,'bld>')==0) {
  //do something else
  return;
}

//your current code

但这取决于您对get_currency($from_Currency, $to_Currency, $amount)的期望。如果您应始终获取货币throw an error,但如果您想在其他位置查看结果,则只能返回return;return NULL;

检查链接它确实包含bld>,但它可能会显示某些标准不同的内容。因此,检查函数失败时输入的内容,并在浏览器中打开url并检查源。您会注意到<span class=bld>***</span>丢失了。当您使用fromto发送相同的货币时会发生这种情况。