문자열에서 숫자 추출
PHP문자열에서 숫자 추출
숫자와 문자가 포함 된 문자열에서 숫자를 추출하고 싶습니다.
"In My Cart : 11 items"
나는 여기서 11 번이나 다른 번호를 얻고 싶다.
해결법
-
==============================
1.
$str = 'In My Cart : 11 12 items'; preg_match_all('!\d+!', $str, $matches); print_r($matches);
-
==============================
2.숫자 이외의 모든 것을 필터링하고 싶다면 filter_var를 사용하는 것이 가장 쉽습니다.
숫자 이외의 모든 것을 필터링하고 싶다면 filter_var를 사용하는 것이 가장 쉽습니다.
$str = 'In My Cart : 11 items'; $int = (int) filter_var($str, FILTER_SANITIZE_NUMBER_INT);
-
==============================
3.
preg_replace('/[^0-9]/', '', $string);
이것은 더 나은 직업을해야합니다 ..!
-
==============================
4.preg_replace 사용 :
preg_replace 사용 :
$str = '(111) 111-1111'; $str = preg_replace('/\D/', '', $str); echo $str;
출력 : 1111111111
-
==============================
5.부동 소수점 숫자의 경우,
부동 소수점 숫자의 경우,
preg_match_all('!\d+\.*\d*!', $string ,$match);
업데이트 된 정규식에 대한 내 의견을 참조하십시오.
-
==============================
6.preg_replace 사용
preg_replace 사용
$str = 'In My Cart : 11 12 items'; $str = preg_replace('/\D/', '', $str); echo $str;
-
==============================
7.나는 이것을위한 신용을 소유하지 않지만, 단지 그것을 공유해야합니다. 이 정규식은 쉼표뿐만 아니라 소수점 / 자리를 포함하여 문자열에서 숫자를 가져옵니다.
나는 이것을위한 신용을 소유하지 않지만, 단지 그것을 공유해야합니다. 이 정규식은 쉼표뿐만 아니라 소수점 / 자리를 포함하여 문자열에서 숫자를 가져옵니다.
/((?:[0-9]+,)*[0-9]+(?:\.[0-9]+)?)/
여기에서 인용 : PHP는 - 정규식 - 10 진수 (점 및 쉼표) 문자열 (예 : 1,120.01)에서 숫자를 추출하는 방법?
-
==============================
8.preg_match를 사용할 수 있습니다 :
preg_match를 사용할 수 있습니다 :
$s = "In My Cart : 11 items"; preg_match("|\d+|", $s, $m); var_dump($m);
-
==============================
9.다음 기능을 사용할 수 있습니다.
다음 기능을 사용할 수 있습니다.
function extract_numbers($string) { preg_match_all('/([\d]+)/', $string, $match); return $match[0]; }
-
==============================
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.이것을 시도하고 preg_replace를 사용하십시오.
이것을 시도하고 preg_replace를 사용하십시오.
$string = "Hello! 123 test this? 456. done? 100%"; $int = intval(preg_replace('/[^0-9]+/', '', $string), 10); echo $int;
데모
-
==============================
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.유스 케이스에 따라 옵션 일 수도 있습니다.
유스 케이스에 따라 옵션 일 수도 있습니다.
$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.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; }
from https://stackoverflow.com/questions/6278296/extract-numbers-from-a-string by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP 용 SimpleXML에서 특정 속성을 가진 자식 제거 (0) | 2018.09.05 |
---|---|
SMTP 서버에서 PHP로 이메일 보내기 (0) | 2018.09.05 |
CodeIgniter는 URL에서 index.php를 제거합니다. (0) | 2018.09.05 |
.htaccess로 하위 도메인을 즉석에서 만듭니다 (PHP). (0) | 2018.09.05 |
페이지를 다시로드하지 않고 양식 제출 (0) | 2018.09.05 |