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