복붙노트

문자열에서 숫자 추출

PHP

문자열에서 숫자 추출

숫자와 문자가 포함 된 문자열에서 숫자를 추출하고 싶습니다.

"In My Cart : 11 items"

나는 여기서 11 번이나 다른 번호를 얻고 싶다.

해결법

  1. ==============================

    1.

    $str = 'In My Cart : 11 12 items';
    preg_match_all('!\d+!', $str, $matches);
    print_r($matches);
    
  2. ==============================

    2.숫자 이외의 모든 것을 필터링하고 싶다면 filter_var를 사용하는 것이 가장 쉽습니다.

    숫자 이외의 모든 것을 필터링하고 싶다면 filter_var를 사용하는 것이 가장 쉽습니다.

    $str = 'In My Cart : 11 items';
    $int = (int) filter_var($str, FILTER_SANITIZE_NUMBER_INT);
    
  3. ==============================

    3.

    preg_replace('/[^0-9]/', '', $string);
    

    이것은 더 나은 직업을해야합니다 ..!

  4. ==============================

    4.preg_replace 사용 :

    preg_replace 사용 :

    $str = '(111) 111-1111';
    $str = preg_replace('/\D/', '', $str);
    echo $str;
    

    출력 : 1111111111

  5. ==============================

    5.부동 소수점 숫자의 경우,

    부동 소수점 숫자의 경우,

    preg_match_all('!\d+\.*\d*!', $string ,$match);
    

    업데이트 된 정규식에 대한 내 의견을 참조하십시오.

  6. ==============================

    6.preg_replace 사용

    preg_replace 사용

    $str = 'In My Cart : 11 12 items';
    $str = preg_replace('/\D/', '', $str);
    echo $str;
    
  7. ==============================

    7.나는 이것을위한 신용을 소유하지 않지만, 단지 그것을 공유해야합니다. 이 정규식은 쉼표뿐만 아니라 소수점 / 자리를 포함하여 문자열에서 숫자를 가져옵니다.

    나는 이것을위한 신용을 소유하지 않지만, 단지 그것을 공유해야합니다. 이 정규식은 쉼표뿐만 아니라 소수점 / 자리를 포함하여 문자열에서 숫자를 가져옵니다.

    /((?:[0-9]+,)*[0-9]+(?:\.[0-9]+)?)/

    여기에서 인용 : PHP는 - 정규식 - 10 진수 (점 및 쉼표) 문자열 (예 : 1,120.01)에서 숫자를 추출하는 방법?

  8. ==============================

    8.preg_match를 사용할 수 있습니다 :

    preg_match를 사용할 수 있습니다 :

    $s = "In My Cart : 11 items";
    preg_match("|\d+|", $s, $m);
    var_dump($m);
    
  9. ==============================

    9.다음 기능을 사용할 수 있습니다.

    다음 기능을 사용할 수 있습니다.

    function extract_numbers($string)
    {
       preg_match_all('/([\d]+)/', $string, $match);
    
       return $match[0];
    }
    
  10. ==============================

    10.

    preg_match_all('!\d+!', $some_string, $matches);
    $string_of_numbers = implode(' ', $matches[0]);
    

    이 특정 경우에서 implode의 첫 번째 인수는 "matches [0]의 각 요소를 단일 공간으로 분리합니다." Implode는 첫 번째 숫자 앞에 또는 마지막 숫자 다음에 공백 (또는 첫 번째 인수가 무엇이든간에)을 넣지 않습니다.

    주목할만한 다른 점은 $ matches [0]은 발견 된 (이 정규 표현식과 일치하는) 배열이 저장된 위치입니다.

    배열의 다른 색인이 무엇인지 더 자세히 알려면 http://php.net/manual/en/function.preg-match-all.php를 참조하십시오.

  11. ==============================

    11.이것을 시도하고 preg_replace를 사용하십시오.

    이것을 시도하고 preg_replace를 사용하십시오.

    $string = "Hello! 123 test this? 456. done? 100%";
    $int = intval(preg_replace('/[^0-9]+/', '', $string), 10);
    echo $int;
    

    데모

  12. ==============================

    12.다른 방법 (유니 코드 문자열도) :

    다른 방법 (유니 코드 문자열도) :

    $res = array();
    $str = 'test 1234 555 2.7 string ..... 2.2 3.3';
    $str = preg_replace("/[^0-9\.]/", " ", $str);
    $str = trim(preg_replace('/\s+/u', ' ', $str));
    $arr = explode(' ', $str);
    for ($i = 0; $i < count($arr); $i++) {
        if (is_numeric($arr[$i])) {
            $res[] = $arr[$i];
        }
    }
    print_r($res); //Array ( [0] => 1234 [1] => 555 [2] => 2.7 [3] => 2.2 [4] => 3.3 ) 
    
  13. ==============================

    13.유스 케이스에 따라 옵션 일 수도 있습니다.

    유스 케이스에 따라 옵션 일 수도 있습니다.

    $str = 'In My Cart : 11 items';
    $num = '';
    
    for ($i = 0; $i < strlen($str); $i++) {
    
        if (is_numeric($str[$i])) {
            $num .= $str[$i];
        }
    }
    
    echo $num; // 11
    

    비록 내가 정규식이나 filter_var () 명시된 경우에 더 유용 할 것이라고 동의하지만.

  14. ==============================

    14.utf8에 대한 str :

    utf8에 대한 str :

    function unicodeStrDigits($str) {
        $arr = array();
        $sub = '';
        for ($i = 0; $i < strlen($str); $i++) { 
            if (is_numeric($str[$i])) {
                $sub .= $str[$i];
                continue;
            } else {
                if ($sub) {
                    array_push($arr, $sub);
                    $sub = '';
                }
            }
        }
    
        if ($sub) {
            array_push($arr, $sub); 
        }
    
        return $arr;
    }
    
  15. from https://stackoverflow.com/questions/6278296/extract-numbers-from-a-string by cc-by-sa and MIT license