회사 홈페이지의 영문화를 진행중이다..
영문화를 하는데 있어 분량파악을 위해 한글 부분만 뽑아내야 하는데…
이 일을 수백개가 넘는 파일 하나씩 열어 한글 부분만 copy & paste 노가다로 하자니 미친짓 같고..
좀편하게 하려고 간단하게 스크립트를 짜보았다.
(이런 간단한 스크립트는 사실 php가 편하다^^;)
우선 내가 원하는 특정파일을 찾아야 한다..
이건 find 명령을 이용하면 쉽게 할수 있다..
1 |
]$ find path -name '*.js' |
위와 같이 하면 확장자가 js인 파일들을 찾을 수 있다.
그리고 한글 부분만 추출하는 정규식은 아래와 같다. (UTF-8 코딩의 경우)
1 |
$pattern = '![^\x{0020}\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]+!u'; |
그러면, 추출해야 할 파일들의 리스트를 find 명령으로 뽑아서 loop를 돌면서 file을 읽어 정규식을 사용해서 한글 부분만 뽑아내면 된다!!
그래서 아래와 같이 코딩을 하고 추출한 한글이 어느 파일의 몇번째 라인인지까지 출력해서 보여주도록 해보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<? $path = "/your/path/"; exec("find $path -name '*.js'", $files); for($i=0; $i<count($files); $i++) { $lines = file($files[$i]); foreach ($lines as $line_num => $line) { $pattern = '![^\x{0020}\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]+!u'; $result = preg_replace('/\s\s+/', ' ', preg_replace($pattern,'',$line)); if($result == " ") { // 공백은 한글이 없는 라인. } else if($result == "") { // 원래 공백인 라인 } else { // 한글이 있는 라인 echo "[".$files[$i]."] Line #{$line_num} : " . $result . "<br />\n"; } } } ?> |
결과는 아래와 같이 나온다^^
1 2 3 4 5 6 7 8 |
... [/your/path/script.js] Line #57 : 검색어를 입력해주세요 [/your/path/script.js] Line #87 : 데이터가 없습니다 [/your/path/aa/aa1.js] Line #42 : 특수문자는 사용하실 수 없습니다 [/your/path/aa/aa2.js] Line #128 : 중복체크를 해 주십시오 [/your/path/bb/bb.js] Line #91 : 데이터를 선택하십시오 [/your/path/bb/bbb/bbb.js] Line #230 : 삭제 하시겠습니까 ... |