programing

문자열에서 숫자가 아닌 문자( 마침표 및 쉼표 제외)를 제거합니다(숫자, 쉼표 및 마침표를 제외한 모든 문자 제거).

randomtip 2022. 10. 2. 11:11
반응형

문자열에서 숫자가 아닌 문자( 마침표 및 쉼표 제외)를 제거합니다(숫자, 쉼표 및 마침표를 제외한 모든 문자 제거).

다음 값이 있는 경우:

 $var1 = AR3,373.31

 $var2 = 12.322,11T

쉼표와 마침표를 제외하고 숫자가 아닌 문자가 삭제된 데이터 복사본으로 새 변수를 만들고 설정하려면 어떻게 해야 합니까?위의 값은 다음 결과를 반환합니다.

 $var1_copy = 3,373.31

 $var2_copy = 12.322,11

다음과 같이 preg_replace를 사용하여 숫자가 아닌 모든 문자와 쉼표 마침표/풀스톱을 스왑할 수 있습니다.

$testString = '12.322,11T';
echo preg_replace('/[^0-9,.]+/', '', $testString);

패턴은 다음과 같이 나타낼 수도 있습니다./[^\d,.]+/

filter_var에 대한 언급이 없었던 것이 놀랍습니다.왜냐하면 이건 오래된 질문이기 때문입니다.

PHP에는 검사 필터를 사용하여 이를 수행하는 기본 제공 방법이 있습니다.특히 이 상황에서 사용하는 것은FILTER_SANITIZE_NUMBER_FLOAT와 함께FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND깃발. 이렇게.

$numeric_filtered = filter_var("AR3,373.31", FILTER_SANITIZE_NUMBER_FLOAT,
    FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);
echo $numeric_filtered; // Will print "3,373.31"

또한 PHP에 내장되어 있기 때문에 PHP의 현재 라이브러리에서 regex를 사용하는 것보다 약간 빠릅니다(단, 문자 그대로 나노초 단위).

숫자가 아닌 모든 문자를 완전히 삭제하는 가장 간단한 방법:

echo preg_replace('/\D/', '', $string);

\D"십진수가 아닌 임의의 문자"를 나타냅니다.

http://php.net/manual/en/regexp.reference.escape.php

사용할 수 있습니다.filter_var숫자, 점 및 쉼표를 제외한 모든 잘못된 문자를 제거합니다.

  • FILTER_SANITIZE_NUMBER_FLOAT필터는 문자열에서 모든 비문자 삭제에 사용됩니다.
  • FILTER_FLAG_ALLOW_FRACTIONfraction separator를 허용하고 있습니다." . "
  • 의 목적FILTER_FLAG_ALLOW_THOUSAND문자열에서 콤마를 가져옵니다.

코드

$var1 = '12.322,11T';

echo filter_var($var1, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);

산출량

12.322,11

filter_var()Sanitize 필터에 대한 자세한 내용을 보려면

글자가 항상 처음이나 끝에 있는 경우 트리밍만 사용하면 됩니다. 정규식은 필요 없습니다.

$string = trim($string, "a..zA..Z"); // this also take care of lowercase

"AR3,373.31" --> "3,373.31"
"12.322,11T" --> "12.322,11"
"12.322,11"  --> "12.322,11"

언급URL : https://stackoverflow.com/questions/4949279/remove-non-numeric-characters-excluding-periods-and-commas-from-a-string-i-e

반응형