我的PHP文件里面有PHP变量。
例如:
Hi <?=$username?>,
Can you please send me an email ?
我想从外部文件中列出此文件中的每个PHP变量
会回来的东西:
Array(
'username'
);
我知道有一个名为get_defined_vars
的PHP函数,但这是一个外部文件
有没有办法从外部文件中获取所有PHP变量?
谢谢
答案 0 :(得分:6)
使用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]);
答案 1 :(得分:5)
根据预期的准确性,位token_get_all()
遍历将为您提供变量基本名称列表:
print_r(
array_filter(
token_get_all($php_file_content),
function($t) { return $t[0] == T_VARIABLE; }
)
);
只需从该数组结构中过滤掉[1]
。
弹性稍差,但有时仍然合适的是基本的正则表达式,它还允许更容易地提取数组变量或对象语法。
答案 2 :(得分:0)
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]);
// --------------