PHP - 词法分析器 token_name() 函数



PHP 词法分析器token_name()函数用于获取令牌的名称。令牌是编程语言的最小单元,例如关键字、运算符和标识符。此函数通过为每个值返回人类可读的名称来帮助识别这些令牌。

语法

以下是 PHP 词法分析器token_name()函数的语法:

string token_name(int $id)

参数

此函数接受$id参数,它是您想要知道名称的令牌的数值。

返回值

token_name()函数返回给定 id 的符号名称。

PHP 版本

token_name()函数首次引入到 PHP 4.2.0 的核心版本中,并在 PHP 5、PHP 7 和 PHP 8 中继续轻松运行。

示例 1

首先,我们将向您展示 PHP 词法分析器token_name()函数的基本示例,以获取令牌的名称。

<?php
   // Here 260 is the token value
   echo token_name(260). "\n"; 
   
   // A constant token corresponds to its own name.
   echo token_name(T_FUNCTION); 
?>

输出

运行上述程序后,它会生成以下输出:

T_LNUMBER
T_FUNCTION

示例 2

在下面的示例中,我们将向您展示如何将token_name()token_get_all()一起使用来标记一小段 PHP 代码并打印令牌名称。

   <?php
   // Define a block of PHP code
   $code = '<?php echo $hello; ?>';
   $tokens = token_get_all($code);
   
   foreach ($tokens as $token) {
      if (is_array($token)) {
         echo token_name($token[0]) . ': ' . $token[1] . "\n";
      } else {
         echo $token . "\n";
      }
   }
   ?> 

输出

以上代码将产生类似于以下的结果:

T_OPEN_TAG: <?php 
T_ECHO: echo
T_WHITESPACE:  
T_VARIABLE: $hello
;
T_WHITESPACE:  
T_CLOSE_TAG: ?>

示例 3

现在,以下代码用于标记 PHP 函数定义并使用token_name()函数获取令牌的名称。

<?php
   // Define a PHP code block here
   $code = '<?php function greet() { echo "Hello, World!"; } ?>';
   $tokens = token_get_all($code);
   
   foreach ($tokens as $token) {
       if (is_array($token)) {
           echo token_name($token[0]) . ': ' . $token[1] . "\n";
       } else {
           echo $token . "\n";
       }
   }
?> 

输出

这将创建以下输出:

T_OPEN_TAG: <?php 
T_FUNCTION: function
T_WHITESPACE:  
T_STRING: greet
(
)
T_WHITESPACE:  
{
T_WHITESPACE:  
T_ECHO: echo
T_WHITESPACE:  
T_CONSTANT_ENCAPSED_STRING: "Hello, World!"
;
T_WHITESPACE:  
}
T_WHITESPACE:  
T_CLOSE_TAG: ?>

示例 4

此示例显示如何标记 PHP 类定义并使用token_name()函数打印令牌名称。

<?php
   // Define a PHP code block here
   $code = '<?php class MyClass { private $var; function myMethod() {} } ?>';
   $tokens = token_get_all($code);
   
   foreach ($tokens as $token) {
       if (is_array($token)) {
           echo token_name($token[0]) . ': ' . $token[1] . "\n";
       } else {
           echo $token . "\n";
       }
   }
?> 

输出

执行上述程序后,将产生以下输出:

T_OPEN_TAG: <?php 
T_CLASS: class
T_WHITESPACE:  
T_STRING: MyClass
T_WHITESPACE:  
{
T_WHITESPACE:  
T_PRIVATE: private
T_WHITESPACE:  
T_VARIABLE: $var
;
T_WHITESPACE:  
T_FUNCTION: function
T_WHITESPACE:  
T_STRING: myMethod
(
)
T_WHITESPACE:  
{
}
T_WHITESPACE:  
}
T_WHITESPACE:  
T_CLOSE_TAG: ?>
php_function_reference.htm
广告