【发布时间】:2021-01-14 23:45:08
【问题描述】:
我正在为一些正则表达式而苦苦挣扎。我想要做的是在字符串中查找金额,删除€,$或£但保留数字,然后查看是否有'b'或'm' - 在这种情况下写'百万铂金币”或“百万金币”,否则就放“金币”。
我的大部分内容都是 hack(见下文),我的正则表达式似乎不起作用的小问题。金额不变。
期望的行为示例
我打算保留小数位和千位分隔符
1260 万美元 ==> 1260 万金币
£2b ==> 200 万铂金币
99 欧元 ==> 99 金币
我的代码
这是我的非工作代码(我怀疑我的正则表达式可能是错误的)。
protected function funnymoney($text){
$text = preg_replace('/[€$£]*([0-9\.,]+)([mb])/i','\0 %\1%',$text);
$text = str_replace('%b%','million platnum coins',$text);
$text = str_replace('%m%','million gold coins',$text);
$text = str_replace('%%','gold coins',$text);
return $text;
}
如果有人能向我解释我缺少什么或出错并指导我找到正确的答案,我将不胜感激。你可以放心地假设我对正则表达式知之甚少。如果可以的话,我想了解为什么该解决方案也有效。
【问题讨论】:
标签: php regex preg-replace