Skip to content

Instantly share code, notes, and snippets.

@srcmaker
Last active November 26, 2020 01:34
Show Gist options
  • Save srcmaker/a704d6feda212e993f2c633b56484758 to your computer and use it in GitHub Desktop.
Save srcmaker/a704d6feda212e993f2c633b56484758 to your computer and use it in GitHub Desktop.
<?php
/**
* @param $string
* @return bool
*
* 대한민국 이름인지 체크
* 대법원 가족관계등록예규 제109호에 의하면 이름 글자수는 성을 제외하고 5자를 넘을 수 없다.
*
*/
function isKoreanName($string)
{
$string = trim($string);
// 한글로만 이루어진 게 아니면 한국어 이름 아님
preg_match('/^[가-힣]+$/',$string,$korean_matches);
if(empty($korean_matches)) return false;
$nameLen = mb_strlen($string);
// 앞 2자가 2자 성씨에 들어가면 우리나라 이름
$familyNames2Str = "남궁,독고,동방,망절,사공,서문,선우,소봉,장곡,제갈,황보";
$familyNames2 = explode(',',$familyNames2Str);
if(in_array(mb_substr($string,0,2),$familyNames2)){
// 성포함 이름은 3자 이상, 7자 이하이어야 우리나라 이름
return ($nameLen >= 3 and $nameLen <= 7)? true:false;
}
// 앞 1 자가 1자 성씨에 들어가면 우리나라 이름.
// 여,유,염,용,이,임 등 초성이 'ㅇ' 으로 시작되는 성은 'ㅇ' 을 'ㄹ' 로 바꾸어 사용 가능하다.
$familyNames1Str = "가,간,갈,감,강,개,견,경,계,고,곡,공,곽,교,구,국,군,궁,궉,권,근,금,기,길,김,나,난,남,낭,내,노,뇌,누,단,담,당,대,도,돈,동,두,라,량,려,로,류,렴,룡,륙,리,림,마,만,매,맹,명,모,목,묘,묵,문,미,민,박,반,방,배,백,범,변,복,봉,부,비,빈,빙,사,사,삼,상,서,석,선,설,섭,성,소,소,소,손,송,수,순,승,시,신,심,십,아,안,애,야,양,어,어금,엄,여,연,염,영,예,오,옥,온,옹,왕,요,용,우,운,원,위,유,육,윤,은,음,이,인,임,자,장,저,전,점,정,제,조,종,좌,주,준,즙,증,지,진,차,창,채,천,초,최,추,수,춘,탁,탄,태,판,팽,편,평,포,표,풍,피,필,하,학,한,함,해,허,현,형,호,홍,화,환,황,후,흥";
$familyNames1 = explode(',',$familyNames1Str);
if(in_array(mb_substr($string,0,1),$familyNames1)){
// 성포함 이름은 2자 이상, 6자 이하이어야 우리나라 이름
return ($nameLen >= 2 and $nameLen <= 6)? true:false;
}
// 아무 것도 걸리지 않으면 우리나라 이름 아님
return false;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment