Search results The results is only based on Apollo89.com
1 posts are related to 'pattern'
  1. 2009/05/08 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 : 삭제 하시겠습니까
...


참고 URL : http://bequietzero.springnote.com/pages/2716706

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/05/08 21:43 2009/05/08 21:43


Total: 213296 (Today: 87, Yesterday: 81)

RSS
읽고 있는 책