2

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()ですか..?

4

1 に答える 1

2

パーサーは (PHP 自体と同様に) HTML コンテキストで開始されるため、渡された文字列全体token_get_allが実際には 1 つの HTML トークンになります。<?phpの先頭に追加する必要があります$str

于 2012-11-18T14:54:19.897 に答える