일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 강추
- 아이폰
- 핑크
- 가사
- 아이폰게임
- Pink
- 추천
- 일상
- php
- 맛집
- great forest
- JavaScript
- 시사회
- Monument
- 모뉴먼트 밸리
- 감상
- 공략
- 모뉴먼트
- 유료
- 게임
- 후기
- goblin sword
- 아이러브니키
- 레고
- 카이로소프트
- 영화
- 아이패드
- Monument Valley
- 잡담
- jQuery
- Today
- Total
잡담소장소
정규식을 이용한 검색 및 파일 쓰기 in PHP 본문
드디어 정규식을 이용한 파일 검색 및 쓰기를 완성하였다 ;-;ㅋ
C#, C++만 배울때가지만해도 PHP나 ASP는 그닥 좋은 언아가 아니라고 생각했는데
PHP는 알면 알 수록 완전 편한 언어라는걸 알게되었다..'-'d
재밌다 :) 히히
/**
* @file: SearchTRC.nwz
* @brief: DB로그파일에서 TRC찾기 :)
* @author: popo1211@neowiz.com
* @version: $Revision:
* @date: $Date:
**/
require "nwz.nwz";
$fname = "dbwolf";
$fo = fopen($fname.".txt", "r"); //dbwolf파일을 읽어옴
$login_fi = fopen($fname."_LOGIN_TRC.txt", "w"); //LOGIN_TRC를 분석, 정리한 파일
$passwd_fi = fopen($fname."_PASSWD_TRC.txt", "w"); //PASSWD_TRC를 분석, 정리한 파일
fwrite($login_fi, "MSRL\t\tNUM_IP\t\tRAW_MAC\t\tGW_MAC\t\tMAC2\r\n");
fwrite($passwd_fi, "MSRL\t\tNUM_IP\t\tMAC2\r\n");
$arrLogin = array();
$arrPasswd = array();
while($readline = fgets($fo))
{
//읽은 단어가 LOGIN_TRC라면.. / /사이에 패턴을 넣는다. 매치하는 단어를 찾음
if(preg_match("/LOGIN_TRC/", $readline))
{
$out = getLoginData($readline);
cntData(&$arrLogin, $out);
setData($login_fi, $out, "login");
}
//읽은 단어가 PASSWD_TRC라면..
if(preg_match("/PASSWD_TRC/", $readline))
{
$out = getPasswdData($readline);
cntData(&$arrPasswd, $out);
setData($passwd_fi, $out, "passwd");
}
}
fclose($fo);
fclose($login_fi);
fclose($passwd_fi);
$login_fi = fopen($fname."_LOGIN_TRC_STAT.txt", "w");
$passwd_fi = fopen($fname."_PASSWD_TRC_STAT.txt", "w");
fwrite($login_fi, "[LOGIN_TRC_STAT] \r\n");
fwrite($passwd_fi, "[PASSWD_TRC_STAT] \r\n");
//DESC sort 및 파일 쓰기 - 자동으로 sorting해주는 함수가 있다 :) 우왕굳 :)
arsort($arrLogin["MSRL"]); //asort(ASC), arsort(DESC)
arsort($arrLogin["NUM_IP"]);
arsort($arrLogin["RAW_MAC"]);
arsort($arrLogin["GW_MAC"]);
arsort($arrLogin["MAC2"]);
setArrData($login_fi, $arrLogin);
arsort($arrPasswd["MSRL"]);
arsort($arrPasswd["NUM_IP"]);
arsort($arrPasswd["MAC2"]);
setArrData($passwd_fi, $arrPasswd);
//파일 닫기
fclose($login_fi);
fclose($passwd_fi);
//LOGIN_TRC에서 IP, MAC, MSRL 등 정보를 추출하여 반환
function /* array */ getLoginData($str)
{
preg_match_all("/\(.*?\)[^,]/", $str, $arrMatch); //string에서 insert부분만 추출
/*괄호안에 있는 모든 단어를 가져온다 하지만 콤마는 제외, ?가 들어감으로써 게으른 *를 수행한다. 괄호의 쌍이 2개인 문장일 때 하나로 가져오는게 아니라 나누어 가져오는 것을 게으른이라 표현..하더라 ;^)*/
preg_match_all("/(\'(.*?)\')/", $arrMatch[0][1], $arrMatchValue); //작은 따옴표을 제외한 insert되는 값만 추출. 하위표현식에 따라 배열에 달리 저장된다.
return $arrMatchValue[2]; //하위 표현식정의에 따른 값만 반환
}
//PASSWD_TRC에서 IP, MAC, MSRL 정보를 추출하여 반환
function /* array */ getPasswdData($str)
{
preg_match_all("/\(.*?\)[^,]/", $str, $arrMatch);
preg_match_all("/\'(.*?)\'/", $arrMatch[0][1], $arrMatchValue);
return $arrMatchValue[1];
}
function cntData(&$arrRet, $arrMatch)
{
//다른 정보와의 연관없이 데이터들을 카운팅함
if(count($arrMatch) > 8 )
{
/* 여기서 또 편한 PHP, 키값이 숫자뿐만아니라 string도 된다는 것 :) 그리고 초기화하지 않아도 알아서 셋팅된다. int 인지 string인지 'ㅅ'd */
$arrRet["MSRL"][$arrMatch[0]] ++;
$arrRet["NUM_IP"][$arrMatch[4]] ++;
$arrRet["RAW_MAC"][$arrMatch[5]] ++;
$arrRet["GW_MAC"][$arrMatch[8]] ++;
$arrRet["MAC2"][$arrMatch[9]] ++;
}
else
{
$arrRet["MSRL"][$arrMatch[1]] ++;
$arrRet["NUM_IP"][$arrMatch[4]] ++;
$arrRet["MAC2"][$arrMatch[5]] ++;
}
}
function setData(&$fw, $arrMatchValue, $type)
{
if($type == "login")
$str = "{$arrMatchValue[0]}\t\t{$arrMatchValue[4]}\t\t{$arrMatchValue[5]}\t\t{$arrMatchValue[8]}\t\t{$arrMatchValue[9]}\r\n";
else
$str = "{$arrMatchValue[1]}\t\t{$arrMatchValue[4]}\t\t{$arrMatchValue[5]}\r\n";
fwrite($fw, $str);
}
function setArrData(&$fw, $arrData)
{
foreach($arrData as $index=>$value)
{
fwrite($fw, "===========$index========== \r\n");
$cnt = 0;
foreach($value as $k=>$v)
{
fwrite($fw, "$cnt: $k : $v \r\n");
$cnt++;
if($cnt > 9) //10위까지만 보여주긔~
break;
}
}
}
?>
'Study ;3' 카테고리의 다른 글
효과적인 보고서 쓰기 (0) | 2010.10.28 |
---|---|
jQuery를 이용한 visibility (1) | 2010.10.06 |
jQuery를 이용한 테이블의 같은 값 찾기 - in PHP (0) | 2010.10.05 |
Encrypt & Decrypt in PHP (0) | 2010.09.17 |
RegEx in PHP (0) | 2010.08.30 |