使用带货币符号的in_array?

时间:2013-06-22 15:52:42

标签: php arrays currency euro

我正在处理一个PHP文件,该文件可以回应以某种货币换算的价格(由另一个网站的数组给出)(例如以€表示)。

我考虑过使用in_array函数来检查从其他网页返回的价格是否包含货币字符。唯一的问题是:即使我使用预定义的数组,它也无法识别该符号。如果我尝试将$ currency数组更改为priceclass给出的实际价格,它将起作用。 提前致谢!

$html=file_get_contents('http://thewebsite');
preg_match_all("thepriceclass", $html, $a);

foreach(end($a) as $key=> $value)
{
   print print_r($value, true).'<br>';
   $currency = array("€");
   $value = str_split($value);
   $message = "This listing =/= €";

   foreach($value as $letter)
   {
      if (in_array($letter, $currency)) 
      {
         $message = "This listing == €";
         break;
      }
   }
   echo $message;
   break;
}

1 个答案:

答案 0 :(得分:0)

你有多少种货币?它不是全部,为什么不使用ISO代码(例如美元,欧元,日元等)呢?

我会创建一个将符号转换为代码的小函数,反之亦然。

编辑:

在评论中,您说您正在使用€,$,£和pуб。

我认为问题在于编码,因为PHP是latin1,或类似的东西。

我只使用货币代码(http://en.wikipedia.org/wiki/ISO_4217)。在你的情况下:美元,欧元,英镑,卢布,并与之比较。

我不完全理解你的代码,因为你在数组中查找值,但是你总是打印€。我认为它仅用于测试。

我会这样做:

$currency = array('EUR');

或:

$currency = array('USD', 'EUR', 'GBP', 'RUB');

如果您不能使用上述内容,我会做这样的事情......

$currencies = array('USD'=>'$', 'EUR'=> '€', 'GBP'=>'£', 'RUB'=>'pуб');

...并使用数组值和键进行比较/打印。

那会有用吗?