php - token_get_all() 函数无法正常工作

标签 php tokenize

我想计算 PHP 源代码中的大括号,这样我最终可以在给定的源代码中找到方法/函数的结尾。

有人建议我使用 token_get_all() 函数来完成这项工作。但由于某种原因,它没有将给定的源拆分为 token 。

我使用以下代码来测试它:

<?php
$str = 'class someClass{
    public $var1;
    private $var2 = null;

    public function func1 ( $someVar )
    {
        echo $someVar;
    }

    public function func2 ( )
    {
        return false;
    }
}';

$bla = token_get_all ( $str );

echo '<pre>';
print_r ( $bla );
echo '</pre>';
?>

但这会导致:

Array
(
    [0] => 311
    [1] => class someClass{
    public $var1;
    private $var2 = null;

    public function func1 ( $someVar )
    {
        echo $someVar;
    }

    public function func2 ( )
    {
        return false;
    }
}
    [2] => 1
)

所以现在我有点坚持这个。为什么 token_get_all() 不标记给定的源代码..?

最佳答案

因为解析器在 HTML 上下文中启动(就像 PHP 本身一样),所以您传递给 token_get_all 的整个字符串实际上是一个 HTML token 。您需要添加<?php在您的 $str 的开头.

关于php - token_get_all() 函数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441227/

相关文章:

search - ElasticSearch中 token 过滤器的控制顺序

Java:字符串标记器并分配给2个变量?

php - 当用户通过 php 单击登录按钮时,我需要将日期插入数据库

php - 从 php 流式传输到 HTML5 音频标签并允许音频可搜索的简单方法?

php - 将名称写入mysql中一行的链接

c - C 中的字符串分词器

javascript - Nearley Moo - 语法不适用于使用 Moo 词法分析器

php - 使用 .load() 获取数据时 jQuery 出现问题

php - 在 SQL 中选择具有最高值的列

C - 确定使用哪个定界符 - strtok()