使用带货币符号的in_array


Using in_array with currency symbol?

我正在开发一个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;
}

您有多少种货币?不是所有的代码,为什么不使用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уб');

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

这样行吗?