itsource

PHP가 숫자 문자열에서 쉼표 제거

mycopycode 2022. 9. 17. 10:00
반응형

PHP가 숫자 문자열에서 쉼표 제거

PHP에는 ALL 문자열인 변수 배열이 있습니다.저장된 값 중 일부는 쉼표가 있는 숫자 문자열입니다.

필요한 것:

문자열에서 쉼표를 잘라내는 방법. 숫자 문자열에 대해서만 이 작업을 수행합니다.이것은 보기만큼 간단하지 않다.주된 이유는 다음 사항에 실패하기 때문입니다.

$a = "1,435";

if(is_numeric($a))
    $a = str_replace(',', '', $a);

이는 다음 이유로 실패합니다.$a = "1435"는 숫자입니다.그렇지만$a = "1,435"는 숫자가 아닙니다.받는 문자열 중에는 쉼표가 있는 일반 문장이 있기 때문에 모든 문자열에 대해 문자열 치환을 실행할 수 없습니다.

반대로 해 주세요.

$a = "1,435";
$b = str_replace( ',', '', $a );

if( is_numeric( $b ) ) {
    $a = $b;
}

가장 쉬운 방법은 다음과 같습니다.

$var = intval(preg_replace('/[^\d.]/', '', $var));

또는 플로트가 필요한 경우:

$var = floatval(preg_replace('/[^\d.]/', '', $var));

테스트는 하지 않았지만 아마if(preg_match("/^[0-9,]+$/", $a)) $a = str_replace(...)

고객님이 원하시는 이상적인 솔루션은filter_var():

$a = filter_var($a, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);

(현재 FILTER_FLAG_ALLOW_SOUNT 옵션이 없기 때문에 FILTER_VALIDATE_INT 대신 FILTER_VALIDATE_FLOATE_FLOAT를 사용하고 있습니다).

이거 먹어봐. 나 이거 먹혔어.

number_format(1235.369,2,'.','')

number_format을 이렇게 사용하면number_format(1235.369,2)답변은 1,235.37 입니다.

하지만 아래와 같이 사용한다면

number_format(1235.369,2,'.','')답은 1235 입니다.37

'1,235.37'의 ''를 삭제합니다.

 function cleanData($a) {

     if(is_numeric($a)) {

     $a = preg_replace('/[^0-9,]/s', '', $a);
     }

     return $a;

}

단어를 포함하는 문자열 내의 숫자에서 쉼표를 삭제하는 경우 preg_replace_callback을 사용하는 것이 가장 쉬운 방법이라고 생각합니다.

예제:

$str = "Hey hello, I've got 12,500 kudos for you, spend it well"

function cleannr($matches)
{
    return str_replace("," , "" , $matches["nrs"]);
}

$str = preg_replace_callback ("/(?P<nrs>[0-9]+,[0-9]+)/" , "cleannr" , $str);


출력:

"안녕하세요, 12500 KUDO를 준비했습니다. 잘 쓰세요."


이 경우 패턴(regex)은 다른 쉼표(문구부호)를 삭제하지 않기 때문에 승인된 답변에 지정된 패턴(regex)과 다릅니다.

사용한다면/[0-9,]+/대신 여기서/[0-9]+,[0-9]+/출력은 다음과 같습니다.

"안녕하세요, 잘 쓰시라고 12500쿠도 가져왔어요"

이거 어때:

/**
 * This will parse the money string
 * 
 * For example 1, 234, 456.00 will be converted to 123456.00
 * 
 * @return 
 */
function parseMoney(string $money) : float
{
    $money = preg_replace('/[ ,]+/', '', $money);
    return number_format((float) $money, 2, '.', '');
}

예:

parseMoney('-1, 100,   000.01'); //-1100000.01

언급URL : https://stackoverflow.com/questions/9334879/php-remove-commas-from-numeric-strings

반응형