string strtok ( string $str , string $token )
(PHP 4, PHP 5)

token 의 문자들을 기준으로 문자열(str)을 작은 문자열(토큰)로 나눕니다.

"This is an example string" 이라는 문자열이 있을 때, 공백(또는 임의 문자)를 사용하여 각각의 단어로 토큰화 할 수 있지만, explode 함수와는 달리 첫 번째 문자열만 나누며, 초기화 하지 않은 strtok 로 다음 문자열을 나눕니다.

<?php
 $string = "This is\tan example\nstring";
 // 탭과 줄바꿈도 토큰화 문자열로 사용합니다.
 // 공백, 탭, 줄바꿈을 만나면 나눕니다.
 $tok = strtok($string, " \n\t");

 // 첫 문자열만 나누어 반환하기 때문에
 // while 반복문으로 다음 문자열을 나눕니다.
 while ($tok = strtok(" \n\t")) {
    echo "단어 = $tok<br />\n";
 }
 /*
 결과:
 단어 = This
 단어 = is
 단어 = an
 단어 = example
 단어 = string
 */


 // . #을 기준으로 나눕니다.
 $selector = 'div.class#id';
 $tagname = strtok($selector,'.#');
 echo $tagname.'<br/>'; // 결과: div

 while($tok = strtok('.#'))
 {
      echo $tok.'<br/>';
 }
 /*
 결과:
 class
 id
 */
 ?> 

<?php
 $teststr = "blah1 blah2/blah3-blah4\\blah5";
 $tok = strtok($teststr," /-\\");
 while ($tok = strtok(" /-\\")){
      echo $tok . "<br />\n";
 }
 /*
 결과:
 blah1
 blah2
 blah3
 blah4
 blah5
 */
 ?>

아래는 도메인, 경로 토큰 예제입니다.

<?php
 // : _ /를 만나면 나눕니다.
 // echo $tok; // 결과: http
 $tok = strtok('http://en.wikipedia.org/wiki/Barack_Obama', ':_/');
 while ($tok = strtok(":_/")) {
    echo "단어 = $tok<br />\n";
 }
 /*
 결과:
 단어 = en.wikipedia.org
 단어 = wiki
 단어 = Barack
 단어 = Obama
 */


 // echo $tok; // 결과: http
 $tok = strtok('http://habonyphp.com/admin/entry/post/hard_write', ':_/');

 echo "단어 = " . strtok(":_/") . "<br />\n"; // 결과: 단어 = habonyphp.com
 echo "단어 = " . strtok(":_/") . "<br />\n"; // 결과: 단어 = admin
 echo "단어 = " . strtok(":_/") . "<br />\n"; // 결과: 단어 = entry
 echo "단어 = " . strtok(":_/") . "<br />\n"; // 결과: 단어 = post
 echo "단어 = " . strtok(":_/") . "<br />\n"; // 결과: 단어 = hard
 echo "단어 = " . strtok(":_/") . "<br />\n"; // 결과: 단어 = write

 // 더 이상 나눌 값이 없으므로 false 입니다.
 echo "단어 = " . strtok(":_/") . "<br />\n"; // 결과: 
 ?> 

다음은 토큰 초기화하는 예제입니다.

<?php
 $str = 'http://kr.news.yahoo.com/service/news/shellsection.htm?linkid=16';

 echo strtok($str, ':_/'); . "<br />\n"; // 결과: http
 echo strtok(":_/") . "<br />\n"; // 결과: kr.news.yahoo.com
 echo strtok(":_/") . "<br />\n"; // 결과: service

 // 초기화합니다.
 echo strtok($str, ":_/") . "<br />\n"; // 결과: http
 echo strtok(":_/") . "<br />\n"; // 결과: kr.news.yahoo.com
 echo strtok(":_/") . "<br />\n"; // 결과: service
 ...
 ?>

이 함수는 성공하면 토큰문자를 반환하고, 실패하면 false 를 반환하지만, 간혹 0 이나 ""와 같은 빈 문자열을 반환할 수 있어서 === 연산자로 확인할 필요가 있습니다.

0 댓글