PHP strtok() 함수란?
PHP의 strtok() 함수는 문자열을 지정한 구분자를 기준으로 잘라내어 작은 조각, 즉 토큰(token) 단위로 분리하는 함수입니다. 호출 시마다 문자열에서 다음 토큰을 하나씩 꺼내어 반환하며, 더 이상 남은 토큰이 없으면 false를 반환합니다.
특히 strtok()는 내부적으로 현재 위치를 기억하기 때문에, 첫 번째 호출 이후에는 구분자만 인자로 전달하여 반복적으로 나머지 토큰을 얻을 수 있다는 점이 특징입니다.
문법(Syntax)
strtok(str, split)
매개변수(Parameters)
str − 분리하고자 하는 원본 문자열입니다.
split − 문자열을 자를 때 사용할 구분 문자를 하나 이상 지정합니다. 여러 개의 구분 문자를 함께 지정할 수도 있습니다.
반환값(Return)
strtok() 함수는 현재 위치에서 읽어온 문자열 토큰을 반환합니다. 더 이상 분리할 토큰이 존재하지 않으면 false를 반환합니다.
사용 예제
다음은 공백을 구분자로 사용해 문자열을 토큰 단위로 출력하는 예제입니다.
<?php
$str = "This is it!";
$token = strtok($str, " ");
while ($token !== false){
echo "$token<br>";
$token = strtok(" ");
}
?>
위 코드에서는 첫 번째 strtok() 호출 시 원본 문자열과 구분자를 함께 전달하고, while 루프 안에서는 구분자만 전달하여 남은 토큰을 순차적으로 가져옵니다. 토큰이 더 이상 없으면 false가 반환되어 루프가 종료됩니다.
실행 결과(Output)
위 예제를 실행하면 아래와 같은 결과가 출력됩니다.
This<br>is<br>it!<br>
브라우저 화면에서는 각 단어가 줄바꿈되어 다음과 같이 표시됩니다.
This
is
it!
정리
strtok() 함수는 explode()처럼 한 번에 모든 조각을 배열로 반환하는 것이 아니라, 호출할 때마다 토큰을 하나씩 반환한다는 점에서 차이가 있습니다. 따라서 메모리 사용을 최소화하면서 문자열을 순차적으로 처리해야 할 때 유용하게 활용할 수 있습니다.