将 in_array 与货币符号一起使用?

Posted

技术标签:

【中文标题】将 in_array 与货币符号一起使用?【英文标题】:Using in_array with currency symbol? 【发布时间】:2013-06-22 15:52:42 【问题描述】:

我正在处理一个 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;

【问题讨论】:

可能是编码问题。 顺便说一句,如果你想在另一个字符串中查找一个字符或字符串,使用strstr(),你不需要将它拆分成一个数组。 例如尝试将编码指定为 unicode 。 en.wikipedia.org/wiki/Unicode @kevin:你的意思是使用它们的 unicode 值作为数组吗? 我以前没有使用过这样的货币符号。但是,我认为这可能会对您有所帮助php.net/manual/en/class.numberformatter.php 【参考方案1】:

你有多少种货币?不是全部,为什么不使用 ISO 代码(例如 USD、EUR、JPY 等)?

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

编辑:

在您所说的 cmets 中,您正在使用 €、$、£ 和 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уб');

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

这行得通吗?

【讨论】:

啊,那我肯定会那样做。我将编辑我的答案。 即使我使用 Unicode 而不是 $,€,... 符号,它仍然不起作用。这可能是因为价格的浮动(例如美元价格是 $0.50 而欧元价格是 0.50€ 例如)? 天啊...我想是这样,但是从您的代码中我无法真正说出发生了什么。

以上是关于将 in_array 与货币符号一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 NSNumberFormatter 格式化货币输入

将 JavaScript 数字转换为货币格式,但没有“$”或任何货币符号 [重复]

加密货币狗狗币资助的GODE—1卫星将于2022年与SpaceX一起发射

将 Object.defineProperties 与符号一起使用是不是有效?

用货币符号在前面格式化货币

JavaScript 将货币分为数值和货币符号/名称