php와 정규 표현식을 이용해서 특정 디렉토리 안의 특정 파일에서 한글만 뽑기

 

회사 홈페이지의 영문화를 진행중이다..

영문화를 하는데 있어 분량파악을 위해 한글 부분만 뽑아내야 하는데…

이 일을 수백개가 넘는 파일 하나씩 열어 한글 부분만 copy & paste 노가다로 하자니 미친짓 같고..

좀편하게 하려고 간단하게 스크립트를 짜보았다.
(이런 간단한 스크립트는 사실 php가 편하다^^;)

우선 내가 원하는 특정파일을 찾아야 한다..

이건 find 명령을 이용하면 쉽게 할수 있다..

]$ find path -name '*.js'

위와 같이 하면 확장자가 js인 파일들을 찾을 수 있다.

그리고 한글 부분만 추출하는 정규식은 아래와 같다. (UTF-8 코딩의 경우)

$pattern = '![^\x{0020}\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]+!u';

그러면, 추출해야 할 파일들의 리스트를  find 명령으로 뽑아서 loop를 돌면서 file을 읽어 정규식을 사용해서 한글 부분만 뽑아내면 된다!!

그래서 아래와 같이 코딩을 하고 추출한 한글이 어느 파일의 몇번째 라인인지까지 출력해서 보여주도록 해보았다.

<?
$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";
            }
        }
}
?>

결과는 아래와 같이 나온다^^

...
[/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 : 삭제 하시겠습니까
...

 

This entry was posted in PHP/ASP and tagged , , , , , . Bookmark the permalink.

댓글 남기기