2012-05-27 3 views
0

긴 PHP 파일이있어서 모든 변수 이름 만 복사하고 만 복사하고 insert sql 쿼리를 작성합니다. 거기에 정규 표현식을 사용하여 패턴을 검색하고 모든 변수를 수집하고 성명서에서 그것을 뱉어 때까지 찾기 결과를 연결할 수있는 방법이 있습니까?패턴으로 결과 찾기 및 연결

저는 TextMate를 사용 중이며 정규 표현식 검색에 익숙합니다. 정규식 검색 결과는 $ 0, $ 1 등의 인수를 제공합니다. 이것이 가능한지 모르겠다. 모든 편집기의 솔루션은 텍스트 메이트가 아닙니다.

변수가 너무 많아서 (+100) 매 하나마다 복사하는 느낌이 들지 않습니다. 여기 내 샘플 파일

$ID = $_POST['id']; 
$TXN_TYPE = $_POST['txn_type']; 
$CHARSET = $_POST['charset'] 
$CUSTOM = $_POST['custom']; 

답변

0

내 자신의 솔루션은 반대로하십시오. 그것은 아마도 가능하지 않습니다.

변수 이름 만 남겨두기 나머지는 모두 제거하십시오.

[space].+ regex to remove everything that is after the variable name. 

변수 이름 만 남도록 파일을 정리하십시오. 그런 다음 원하는 변수 이름을 원하는 형식으로 가져 오려면 몇 번 더 찾아서 바꾸십시오.

1

get_defined_vars()를 사용하여 어떤 것을 시도해 볼 수 있습니다. 그러나이 함수는 또한 GLOBAL vars를 나열합니다. 이 스 니펫을 사용하여 원하지 않으면 정의 된 변수 만 표시하십시오.

$ variables = array_diff (get_defined_vars(), array()));

그러나이 스 니펫은 Notices를 생성하고 아직 해결 방법을 찾지 못했습니다.

$ _POST 변수 만있는 경우 $ _POST 배열 자체를 반복 할 수 있습니다 배열을 반복하면서 SQL을 프로그래밍 방식으로 만듭니다. 당신이 (안 $_POST 배열 인덱스를)만을 변수 이름과 일치하도록 찾고 있다면

0

, 다음 정규 표현식은 거의 in the PHP documentation 제공됩니다

\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* 

이 의지 물론, $ _POST 포함, 그러나 그것은 쉽게 제거 할 수 있어야합니다. 그렇지 않은 경우 (TextMate를 지원하는 경우), 당신은 부정적 예측 함께 할 수있는 :

\$(?!_POST($|[^a-zA-Z0-9_\x7f-\xff]))[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* 
+0

그것은 당신의 PHP 파일은'$ asdf을 = 'asdfklasdflkj의 $의 asdfasdf'와 같은 문자열을 포함하는 경우이 잘못된 반응을 반환 것을 주목할 필요가;' . 나는 이것이 사실이 아니라고 생각하지만, 좀 더 강력한 것을 원한다면 Constantine과 같은 솔루션에 찬성하여 정규 표현식을 피하는 것이 나을 것입니다. –

+0

좋아 보인다, 조사 할게. 나는 이미 내 자신의 솔루션을 사용했다. –