在 PHP 中解析货币字符串
在 PHP 中解析货币字符串时,根据当前区域设置处理不同的小数分隔符可能具有挑战性。虽然使用 str_replace() 将逗号转换为点在某些情况下可行,但它依赖于小数点分隔符始终为点的假设。
更强大的解决方案
为了解决这个限制并迎合多种语言环境,一个更复杂但通用的解决方案是使用正则表达式 (regex)。操作方法如下:
public function getAmount($money) { $cleanString = preg_replace('/([^0-9\.,])/i', '', $money); $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money); $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1; $stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased); $removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '', $stringWithCommaOrDot); return (float) str_replace(',', '.', $removedThousandSeparator); }
说明
注意事项
以上是如何在 PHP 中解析具有多个语言环境的货币字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!