如何在一个文件中列出所有的PHP变量?

6za6bjd0  于 2023-06-20  发布在  PHP
关注(0)|答案(3)|浏览(103)

我有一个PHP文件,里面有PHP变量。
示例:

Hi <?=$username?>,
Can you please send me an email ?

我想从一个外部文件中列出这个文件中的每个PHP变量。
会回来的东西:

Array(
   'username'
);

我知道有一个名为get_defined_vars的PHP函数,但这是一个外部文件。
有没有办法从外部文件中获取所有PHP变量?
谢谢你

fcg9iug3

fcg9iug31#

使用file_get_contents()preg_match_all()

$file = file_get_contents('file.php'); 
preg_match_all('/\$[A-Za-z0-9_]+/', $file, $vars);

print_r($vars[0]);
u1ehiz5o

u1ehiz5o2#

根据预期的准确性,一个位token_get_all()遍历将得到一个变量基础名称列表:

print_r(
    array_filter(
        token_get_all($php_file_content),
        function($t) { return $t[0] == T_VARIABLE; }
    )
);

只需从该数组结构中过滤掉[1]即可。
基本正则表达式的弹性稍差,但有时仍然适用,它也允许更容易地提取数组变量或对象语法。

mrphzbgm

mrphzbgm3#

function extract_variables($content, $include_comments = false)
{
    $variables = [];

    if($include_comments)
    {
        preg_match_all('/\$[A-Za-z0-9_]+/', $content, $variables_);

        foreach($variables_[0] as $variable_)
            if(!in_array($variable_, $variables))
                $variables[] = $variable_;
    }
    else
    {
        $variables_ = array_filter
        (
            token_get_all($content),
            function($t) { return $t[0] == T_VARIABLE; }
        );

        foreach($variables_ as $variable_)
            if(!in_array($variable_[1], $variables))
                $variables[] = $variable_[1];
    }

    unset($variables_);
    return $variables;
}

// --------------

$content = file_get_contents("file.php");
$variables = extract_variables($content);

print_r($vars[0]);

// --------------

相关问题