PHP 프로그래밍을 하다 보면 문자와 숫자가 뒤섞여 있는 문자열에서 원하는 숫자 부분만 추출해야 하는 경우가 종종 있습니다. 이번 글에서는 substr() 함수와 strpos() 함수를 조합하여 특정 숫자로 시작하는 값을 손쉽게 가져오는 방법을 알아보겠습니다.
문제 상황
다음과 같이 문자와 숫자가 함께 포함된 문자열이 있다고 가정해 보겠습니다.
$value = "1045632245555fghjklm67535454663443gfdjkbvc9890000006777743";
여기서 우리는 989로 시작하는 다음과 같은 특정 값을 추출하고자 합니다.
9890000006777743
해결 방법: substr()과 strpos() 활용
이 문제는 strpos()로 원하는 숫자의 시작 위치를 찾은 후, substr()으로 해당 위치부터 지정한 길이만큼 잘라내면 간단히 해결할 수 있습니다. 아래는 전체 예제 코드입니다.
<!DOCTYPE html> <html> <body> <?php $value = "1045632245555fghjklm67535454663443gfdjkbvc9890000006777743"; echo "원본 문자열 = ", $value, "<br>"; $result = substr($value, strpos($value, "989"), 16); echo "추출된 값 = ", $result; ?> </body> </html>
코드 설명
strpos($value, "989")는 문자열 내에서 "989"가 처음 등장하는 위치(인덱스)를 반환합니다. 이후 substr()은 그 위치부터 16자리의 문자를 잘라내어 결과적으로 9890000006777743이라는 값을 얻게 됩니다.
실행 결과
원본 문자열 = 1045632245555fghjklm67535454663443gfdjkbvc9890000006777743 추출된 값 = 9890000006777743
마무리
이처럼 strpos()와 substr()의 조합은 문자열에서 특정 패턴의 위치를 찾아 필요한 부분만 추출할 때 매우 유용합니다. 참고로 만약 검색하려는 값이 문자열에 존재하지 않으면 strpos()는 false를 반환하므로, 실무에서는 반드시 결과값의 유효성을 검사하는 로직을 함께 추가하는 것이 좋습니다.