2012-01-15 3 views
1

안에 PHP 변수가있는 PHP 파일이 있습니다.
예 :
파일에 모든 PHP 변수를 나열하는 방법은 무엇입니까?

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

나는이 파일의 모든 PHP 변수, 외부 파일에서 나열하고 싶습니다. 반환
뭔가 :

Array(
    'username' 
); 

내가 get_defined_vars라는 PHP 함수가 알고 있지만이 외부 파일입니다.
외부 파일에서 모든 PHP 변수를 가져 오는 방법이 있습니까?

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

것은 그냥 필터링 : 조금 token_get_all() 통과 당신에게 변수의 basename의 목록을 얻을 것이다

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

print_r($vars[0]); 
+1

나는 좋은 PHP IDE를 권장합니다. –

답변

6

사용 file_get_contents()preg_match_all() 감사 [1]을 배열 구조체에서 가져옵니다.

조금 덜 탄력적이지만 때로는 적절한 정규 표현식을 사용하면 배열 변수 또는 객체 구문을보다 쉽게 ​​추출 할 수 있습니다.

+1

대단히 감사합니다. 이것은 또한 페이지에서 달러 금액을 보여주었습니다. 예를 들어 $ 87, 나는 ints를 이스케이프 처리하고 현재는 괜찮습니다. – xtrimsky

+0

'$ this-> myMethod()'와 같은 코드에 뭔가가 있으면, 위의 정규 표현식은'$ this-'를 변수로 결정합니다. 고친다 고 마지막 하이픈 걸릴 생각? 또한 코멘트에 포함 된 변수를 포함할지 여부를 제어 할 수있는 내 대답의 함수를 참조하십시오. 감사 –

5

예상 정확도에 따라 :

당신에게

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]); 

// -------------- 
관련 문제