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
廣告