PHP - 分词器函数



PHP Tokenizer 是一个内置的 PHP 扩展,它将 PHP 源代码分词(或分割)成单独的标记。之后,可以检查和修改这些标记。它对于创建代码转换和分析工具非常有用。

分词器函数可以提供与 Zend 引擎中嵌入的 PHP 分词器的接口。通过使用这些函数,我们可以编写自己的 PHP 源代码分析或修改工具,而无需在词法级别处理语言规范。

安装

分词器扩展通常与 PHP 一起提供,并且默认情况下已启用。如果您使用的是常规 PHP 安装,则无需执行任何其他操作。

要检查分词器是否已启用,请使用以下内容生成一个 PHP 文件(例如,phpinfo.php),并通过 Web 服务器访问它:

<?php
   phpinfo();
?> 

并在输出中检查 **Tokenizer** 部分。

配置

分词器扩展不需要任何其他配置。它与 PHP 的默认配置一起开箱即用。

预定义常量

当扩展编译到 PHP 中或在运行时动态加载时,解析器标记列表中的标记将指定为常量。

序号 常量和描述
1 TOKEN_PARSE (int)

识别在给定上下文中使用保留字的能力。

PhpToken 类

PhpToken 类 -

序号 标记和描述
1 PhpToken::__construct

创建一个新的 PhpToken 对象。

2 PhpToken::getTokenName

返回标记的名称。

3 PhpToken::is

检查标记是否为给定类型。

4 PhpToken::isIgnorable

检查 PHP 解析器是否会忽略该标记。

5 PhpToken::__toString

返回标记的文本内容。

6 PhpToken::tokenize

将给定的源代码分成 PHP 标记,由 PhpToken 对象表示。

示例

<?php
   if (!defined('T_ML_COMMENT')) {
      define('T_ML_COMMENT', T_COMMENT);
   } else {
      define('T_DOC_COMMENT', T_ML_COMMENT);
   }

   $source = file_get_contents('example.php');
   $tokens = token_get_all($source);

   foreach($tokens as $token) {
      if(is_string($token)) {
         //  simple 1-character token
         echo $token;
      } else {
         //  token array
         list($id, $text) = $token;
         switch ($id) { 
            case T_COMMENT: 
            case T_ML_COMMENT: // we've defined this
            case T_DOC_COMMENT: // and this
            
			//  no action on comments
            break;

            default:
               //  anything else -> output "as is"
               echo $text;
               break;
         }
      }
   }
?>

PhpToken 类函数

序号 函数和描述
1

token_get_all() 函数

此函数可以将给定的源代码分成 PHP 标记。

2

token_name() 函数

此函数可以获取给定 PHP 标记的符号名称。

php_function_reference.htm
广告