token_get_all()函数无法正常工作

时间:2012-11-18 14:50:06

标签: php tokenize

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

我被建议使用token_get_all()功能来完成这项工作。但由于某种原因,它并没有将给定的源分成标记。

我正在使用以下代码进行测试:

<?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()没有标记给定的源代码..?

1 个答案:

答案 0 :(得分:2)

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