Tokenizer token_get_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

token_get_all — 주어진 소스를 PHP 토큰으로 분할


설명

token_get_all(string $code, int $flags = 0): array

token_get_all()은 Zend 엔진의 어휘 스캐너를 사용하여 주어진 code 문자열을 PHP 언어 토큰으로 구문 분석합니다.

파서 토큰 목록은 파서 토큰 목록을 참조하거나 token_name()을 사용하여 토큰 값을 문자열 표현으로 변환합니다.


매개변수

code
구문 분석할 PHP 소스입니다.
flags
유효한 플래그:
  • TOKEN_PARSE - 특정 상황에서 예약어를 사용하는 능력을 인식합니다.

반환 값

토큰 식별자의 배열입니다. 각 개별 토큰 식별자는 단일 문자(예: ;, ., >, ! 등...)이거나 요소 0의 토큰 인덱스, 요소 1의 원래 토큰 문자열 내용 및 요소 2의 줄 번호.


Examples

예제 #1 token_get_all() 예제

                  
<?php
$tokens = token_get_all('<?php echo; ?>');

foreach ($tokens as $token) {
    if (is_array($token)) {
        echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
    }
}
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Line 1: T_OPEN_TAG ('<?php ')
Line 1: T_ECHO ('echo')
Line 1: T_WHITESPACE (' ')
Line 1: T_CLOSE_TAG ('?>')
                

예제 #2 token_get_all() 잘못된 사용 예

                  
<?php
$tokens = token_get_all('/* comment */');

foreach ($tokens as $token) {
    if (is_array($token)) {
        echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
    }
}
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Line 1: T_INLINE_HTML ('/* comment */')
                

이전 예에서 문자열이 예상되는 T_COMMENT가 아닌 T_INLINE_HTML로 구문 분석된다는 점에 유의하십시오. 제공된 코드에 열린 태그가 사용되지 않았기 때문입니다. 이것은 일반 파일의 PHP 태그 외부에 주석을 넣는 것과 같습니다.

예제 #3 예약어를 사용하는 클래스의 token_get_all() 예제

                  
<?php

$source = <<<'code'
<?php

class A
{
    const PUBLIC = 1;
}
code;

$tokens = token_get_all($source, TOKEN_PARSE);

foreach ($tokens as $token) {
    if (is_array($token)) {
        echo token_name($token[0]) , PHP_EOL;
    }
}
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

T_OPEN_TAG
T_WHITESPACE
T_CLASS
T_WHITESPACE
T_STRING
T_CONST
T_WHITESPACE
T_STRING
T_LNUMBER
                

TOKEN_PARSE 플래그가 없으면 끝에서 두 번째 토큰(T_STRING)은 T_PUBLIC이 됩니다.


기타

  • PhpToken::tokenize() - 주어진 소스를 PhpToken 개체로 표시되는 PHP 토큰으로 분할합니다.
  • token_name() - 주어진 PHP 토큰의 기호 이름을 가져옵니다.