Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP FILTER_SANITIZE_NUMBER_FLOAT 상수 사용법과 플래그 옵션 총정리

PHP의 FILTER_SANITIZE_NUMBER_FLOAT 상수는 부동 소수점(float) 숫자에서 허용되지 않는 모든 문자를 제거하는 데 사용됩니다. 이 필터를 적용하면 숫자, 부호(+/-), 그리고 선택적으로 지정한 구분 기호를 제외한 나머지 문자는 모두 삭제됩니다.

사용 가능한 플래그(Flags)

FILTER_SANITIZE_NUMBER_FLOAT 필터는 다음 세 가지 플래그와 함께 사용할 수 있으며, 각 플래그는 특정 문자의 허용 여부를 결정합니다.

  • FILTER_FLAG_ALLOW_FRACTION — 소수점(.) 같은 소수 구분 기호를 허용합니다.
  • FILTER_FLAG_ALLOW_THOUSAND — 콤마(,) 같은 천 단위 구분 기호를 허용합니다.
  • FILTER_FLAG_ALLOW_SCIENTIFIC — e, E와 같은 과학적 표기법(지수 표기)을 허용합니다.

반환 값

FILTER_SANITIZE_NUMBER_FLOAT 상수 자체는 아무것도 반환하지 않습니다. 실제 정제(sanitize) 작업은 filter_var() 함수에 이 상수를 전달했을 때 수행되며, 함수는 불법 문자가 제거된 문자열을 반환합니다.

예제 1: FILTER_FLAG_ALLOW_FRACTION 플래그

다음은 FILTER_FLAG_ALLOW_FRACTION 플래그를 사용하여 소수점을 허용하는 예제입니다.

<?php
    $var = "3-1f+2.56p";
    var_dump(filter_var($var, FILTER_SANITIZE_NUMBER_FLOAT,
    FILTER_FLAG_ALLOW_FRACTION));
?>

출력 결과

string(8) "3-1+2.56"

위 결과에서 알 수 있듯이, 알파벳 'f'와 'p'는 불법 문자로 간주되어 제거되었지만, 소수점 '.'은 FRACTION 플래그 덕분에 그대로 유지되었습니다.

예제 2: FILTER_FLAG_ALLOW_THOUSAND 플래그

이번에는 FILTER_FLAG_ALLOW_THOUSAND 플래그를 사용하여 천 단위 구분 기호인 콤마(,)를 허용하는 예제를 살펴보겠습니다.

<?php
    $var = "1-4f+25,6p";
    var_dump(filter_var($var, FILTER_SANITIZE_NUMBER_FLOAT,
    FILTER_FLAG_ALLOW_THOUSAND));
?>

출력 결과

string(8) "1-4+25,6"

이 예제에서도 마찬가지로 알파벳 문자는 제거되고, 콤마(,)는 THOUSAND 플래그에 의해 유효한 문자로 인정되어 결과에 포함된 것을 확인할 수 있습니다.

정리

FILTER_SANITIZE_NUMBER_FLOAT는 사용자 입력값에서 숫자 관련 데이터만 안전하게 추출하고 싶을 때 유용한 필터입니다. 다만 어떤 구분 기호까지 허용할지는 플래그 조합으로 신중하게 결정해야 하며, 필요에 따라 여러 플래그를 비트 연산자(|)로 조합하여 동시에 사용할 수도 있습니다.