문자열중 초성 구하다가 문제점 입니다 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

문자열중 초성 구하다가 문제점 입니다 정보

문자열중 초성 구하다가 문제점 입니다

본문

//초성구하기///////////////////////////////
$artist_str = "가나다라마바사"; 
if( preg_match( "/[0-9a-za-z]/", $artist_str) ) {
$str_cho = substr($artist_str, 0, 1);
$str_cho = strtoupper("$str_cho"); // 대문자로 바꿔줌
}
else{
// 이름 첫글자(성)의 초성을 찾는다
$chosung_arr =      array('ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ');
$kor_chosung_arr = array('가','까','나','다','따','라','마','바','빠','사','싸','아','자','짜','차','카','타','파','하');
$str_chosung = (substr($artist_str,0,2));
array_push($kor_chosung_arr,$str_chosung); // 이름의 성을 한글 초성을 대치하는 위 배열에 추가 시킨다
sort($kor_chosung_arr); // 다시 정렬한다
// 정렬된 배열에서 추가 시킨 값에 바로 앞단에 인덱스가 초성이 값이 되는것이다 '가 -> ㄱ'
$idx = array_search($str_chosung,$kor_chosung_arr);
$idx = (isset($kor_chosung_arr[$idx+1]) && $kor_chosung_arr[$idx+1] == $kor_chosung_arr[$idx]) ? $idx : $idx-1;
if($idx<0) $idx=0; // 필터가 될수 없는 글짜는 'ㄱ'으로 기본값으로 한다
//echo $chosung_arr[$idx];
$str_cho =  $chosung_arr[$idx];
$str_cho = trim($str_cho);//앞뒤공백제거
}


위같이 해서요 초성은 구해집니다.
대부분요...
그러나....

문제는 한글일때 이따금 구해지는 초성이 "?" <-- 이렇게 물음표로 뜹니다.
왜그럴까요?
영문이야 잘 되구요,,

이유는 저로서는 알 수 없어서 적어도 물음표로 추출되면 조치를 취할 생각인데,,,
임시방편으로 아래와 같은 코드로 분별을 하고자 합니다.
가령 아래와 같이요

$stop_w = "?";

if($str_cho == $stop_w )
 ehco "하지마~~~";
else
 echo "잘했어";

이렇게 했는데 ...........
우째서 물음표 ? 가 추출 됬는데도
"잘했어" 만 뜰까요?

댓글 전체

전체 75 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT