본문 바로가기
프로그래밍/PHP

[함수] 본문에서 주민번호 패턴 찾아내기...

by 백룡화검 2008. 8. 12.

출처 : PHPSCHOOL

 

게시글 본문 내용중 주민번호 검색 해 냅니다.
주민번호를 * 로 변환 하도록 해도 되겠네요...
나름 머리를 쓰면서 만들다가.. 요즘은 하드웨어를 이용해서 변환시킨다길래....
한번 써보지도 못하고...쓸모없는 소스가 되어버렸네요...
여튼, 그래도.. 꼭 필요하신 분이 계실거 같아.. 공개합니다.
주민번호 체크(function RegiNum)하는 것은 phpschool.com에 어느분께서 올리신걸 이용했습니다. 죄송합니다만, 어느분이 올리셨는지 까먹었네요..^^; 검색해서 찾아보세용..
<?
$bbs_contents = '본문내용에 주민번호와 그렇지않은 번호를 넣어보세요....';
$pattern = '/^\d{6}-\d{7}$/';
$pattern = '/[0-9]{6}(-|\*|_|=|[[:space:]])*[1|2|3|4][0-9]{6}/';
preg_match_all($pattern, $bbs_contents, $matches, PREG_SET_ORDER);
$i=0;
foreach ($matches as $val) {
    preg_match("/(\d{6}).*(\d{7})/",$val[0],$res);
    $chk_jumin =$res[1].$res[2];
    echo $chk_jumin.' => ';
    if(RegiNum($chk_jumin)) {
        echo ' true, ';
        $bbs_contents = str_replace($val[0],'<font color="#ff8800">'.$val[0].'</font>',$bbs_contents);
    } else {
        $bbs_contents = str_replace($val[0],'<font color="blue">'.$val[0].'</font>',$bbs_contents);
        echo ' false, ';
    }
    $i++;
}
function RegiNum($reginum) {
$weight = '234567892345'; // 자리수 weight 지정
$len = strlen($reginum);
$sum = 0;
if ($len <> 13) { return false; }
for ($i = 0; $i < 12; $i++) {
$sum = $sum + (substr($reginum,$i,1) * substr($weight,$i,1));
}
$rst = $sum%11;
$result = 11 - $rst;
if ($result == 10) {$result = 0;}
else if ($result == 11) {$result = 1;}
$jumin = substr($reginum,12,1);
if ($result <> $jumin) {return false;}
return true;
}
?>

 

출처 : PHPSCHOOL