2013-01-08 2 views
0

저는 2500 개의 세션 변수가 들어있는 웹 사이트를 가지고 있습니다. 대부분의 사이트는 따옴표없이 레이블이 지정되어 있습니다 (분명히 내 작업은 아닙니다 ...). 예를인용 부호가없는 문자열을 찾아서 정규식을 사용하여 인용합니다.

$_SESSION[var] 

를 들어 오히려 지금

$_SESSION['var'] 

보다, 나는 그들이 따옴표를 가지고 있는지 확인하기 위해 그들 모두 2,500을 변경할 수있어. 모든 파일을 반복하고 모든 세션 변수를 확인하기 위해 PHP를 작성해야한다는 것을 알고 있습니다. 아마도 preg_match를 사용할 것이지만 필요한 정규 표현식에 대해서는 잘 모르겠습니다. 따옴표가없는 코드를 찾았 으면 누군가가 더 좋은 방법을 생각할 수 없다면 str_replace를 사용해야 할 것입니다.

누구나 알고 계십니까? 이 작업을 수동으로 수행 할 수 없으면 죽일 수도 있습니다! :) 환호

+2

일부 코드 편집기 (예 : PSPad)를 사용하면 경로 내의 파일을 재귀 적으로 검색/대체 할 수 있습니다. 그런 다음'[(. *)]'을 검색하고'[ '$ 1']'로 바꾸는 것은 문제가되지 않습니다. – shadyyx

+0

안녕하세요 @ shadyyx - PSPad는 좋은 해결책이 될 것입니다. 마하 여기에 머물러 있습니다. – 30secondstosam

+0

Mac에서는 명령 줄을 사용하지 않으시겠습니까? 이와 같이 [예제] (http://lifehacker.com/5810026/quickly-find-and-replace-text-across-multiple-documents-via-the-commandline). – shadyyx

답변

0

시도 :

$yourCodeWhereYouNeedToReplace = file_get_contents('awfulCode.php'); //:P 
preg_replace_callback('/_SESSION\[(\w+)\]/', 
         function ($matches) 
         { return '_SESSION[\''.$matches[1].'\']'; }, 
         $yourCodeWhereYouNeedToReplace); 

편집 : 모든 [key]['key']로 교체하려는 경우도 패턴 \[(\w+)\]을 사용할 수 있습니다.

+0

@SalmanA Regex는 일치하지 않으므로 유효하지 않으므로 교체되지 않습니다. 아니면'$ _SESSION [ 'key1'] [ 'key2']'를 의미합니까? – Leri

+0

LOL! 'awfulCode.php'를 사랑하십시오. 정말 끔찍한 코드입니다. 그러나 이것은 다른 사람들의 쓰레기를 집어 들고있는 개발자의 삶의 일부입니다.) – 30secondstosam

+0

@ 30secondstosam 그래, 우리는 그걸로 아무 것도 할 수 없어. 이것이 도움이된다면 기쁠 것입니다. :) – Leri

관련 문제