지금은 PHP 소스 코드 파일에서 특정 함수를 찾기 위해 PHP의 토크 나이저를 사용하는 스크립트가 있습니다. 나는 현재를 찾고 있어요 패턴은 다음과 같습니다PHP 토크 나이저로 함수 찾기
T_STRING + T_WHITESPACE (옵션) + "("이것은 내가의 목적을 위해 무시하고 변수 기능을 제외하고 지금까지 내 테스트 케이스의 모든 일치하는 것으로 보인다
.이 질문에 여기
명백한 문제는이 패턴이 일치하는 함수 정의처럼, 오 탐지를 많이 생산하고 있습니다 :
public function foo() { // foo() should not be matched
내 질문은, 는 모르겠지만를위한 안정된/정확한 방법이있다 소스 코드에서 oking하고 모든 함수 호출을 뽑아 낼 수 있습니까? 토크 나이저를 사용하는 것보다 더 좋은 방법일까요?
편집 : 특히
, 내가 클래스 파일 내 disable_functions
PHP 지시어 의 기능을 에뮬레이션 할 찾고 있어요. 따라서 exec()
을 허용하지 않으면 분석 된 파일 내에서 해당 기능을 사용하려고합니다. 나는 가변 함수가 이것을 매우 어렵게 만든다는 것을 알기 때문에 이것들을 감지하고 그것들을 허용하지 않는다.
만약 당신이 그들을 찾고 있다면, 당신은 미리 모든 T_WHITESPACE와 T_COMMENT 섹션을 벗겨서 조금 단순화시킬 수 있습니다. 그런 다음 앞의 토큰이 T_FUNCTION/메소드 선언이 아니라고 주장하는 것이 더 쉬워집니다. '$ func();'과 다른 호출은 여전히 빠져있을 것이다. – mario
@mario : 주석/공백 제거 제안을 주셔서 감사합니다. 실제로 도움이 될 것입니다. – FtDRbwLXw6