PHP에서 재무 데이터를 구문 분석할 때 화폐 값을 나타내는 문자열을 부동 소수점 숫자로 변환해야 하는 경우가 많습니다. 이를 달성하기 위한 일반적인 접근 방식은 문자열에서 쉼표를 마침표로 바꾼 다음 floatval() 함수를 사용하는 것입니다. 그러나 이 방법은 고정된 소수 구분 기호(마침표)에 의존하며 쉼표가 구분 기호로 사용되는 로케일에는 적합하지 않을 수 있습니다.
두 소수 구분 기호를 모두 처리하는 보다 강력한 솔루션은 다음 코드에 나와 있습니다. :
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); }
이 솔루션은 여러 가지로 구성됩니다. 단계:
이 접근 방식을 사용하면 형식화되지 않은 화폐 값이 로캘별 소수 구분 기호에 관계없이 올바르게 구문 분석됩니다. 그러나 금전적 가치의 소수 부분은 두 자리 이하라고 가정한다는 점에 유의하는 것이 중요합니다.
예시 테스트:
['1,10 USD', 1.10], ['1 000 000.00', 1000000.0], [' 000 000.21', 1000000.21], ['£1.10', 1.10], ['3 456 789', 123456789.0], ['3,456,789.12', 123456789.12], ['3 456 789,12', 123456789.12], ['1.10', 1.1], [',,,,.10', .1], ['1.000', 1000.0], ['1,000', 1000.0]
위 내용은 PHP에서 형식화되지 않은 화폐 값을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!