分裂货币及金额从字符串
我进口其具有不同的货币金额文件签署分裂货币及金额从字符串
£12.10
$26.13
€12.50
我需要导入并转换成单一货币这一点。我分割字符串如下
$parts = split(' ', preg_replace("/([0-9])/", ' ${1}', $amount, 1));
无法建立与PREG_SPLIT_DELIM_CAPTURE使preg_split工作
$parts = preg_split("/\d/", $amount, 2, PREG_SPLIT_DELIM_CAPTURE);
我有货币符号的阵列,以货币代码
$currencySymbols = array('£'=>'GBP', '$'=>'USD','€'=>'EUR')
我需要 1.将字符串拆分为货币符号和值 - 如果有更好的方法,那么我在做什么 2.将货币符号映射到 货币代码。无法使用$ currencySymbols [$ parts [0]]映射
任何帮助将不胜感激。使用(PHP 5.2.6)的charset = UTF-8
非常感谢
你不应该使用分裂,但模式匹配,以确定的数量和使用的货币。因为在某些地区,货币符号出现在金额前面,而在其他地方,则出现在金额后面。此外,在某些地区,符号和数量由空格分隔。
以下功能可用于:
function findAmountAndCurrency($s, &$amount, &$currency){
$re_amount="/[0-9\.]+/";
$re_curr="/[£\$€]+/";
preg_match($re_amount, $s, $matches);
$amount = floatval($matches[0]);
preg_match($re_curr, $s, $matches);
$currency = $matches[0];
}
这是它如何被使用:
function handle($s){
$currencySymbols = array('£'=>'GBP', '$'=>'USD','€'=>'EUR');
findAmountAndCurrency($s, $amount, $currency);
echo("Amount: " . $amount . "<br/>");
echo("Currency: " . $currency . "<br/>");
echo("Identified Currency: " . $currencySymbols[$currency] . "<br/>");
}
handle("£12.10");
handle("3.212 €");
handle("$ 99.99");
,如果你有UTF-8输入你可能会与欧元符号的一个问题。现在无法检查解决方案。也许别人可以帮忙。
很抱歉没有回应。我以为我会收到一封电子邮件通知任何回复。所以虽然你们几乎立即回复,但我今天才知道。 我同意你的模式匹配处理区域设置。 我意识到的主要问题是如下所示 “A 30.30£”数据本身 â,¬62.03 我可以使它工作的唯一途径是设置货币符号代码如下 阵列('A £ '=>' GBP”, 'â,¬'=> 'EUR'); – webber 2010-06-11 03:03:11
NumberFormatter在PHP 5.2.6中不可用 – NineBerry 2010-06-09 00:35:18
@NineBerry:良好的调用,我没有注意到文档是5.3。呸! – R0MANARMY 2010-06-09 00:38:32