将 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一起发射