문자열중 초성 구하다가 문제점 입니다 정보
문자열중 초성 구하다가 문제점 입니다
본문
//초성구하기///////////////////////////////
$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 "잘했어";
이렇게 했는데 ...........
우째서 물음표 ? 가 추출 됬는데도
"잘했어" 만 뜰까요?
$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 "잘했어";
이렇게 했는데 ...........
우째서 물음표 ? 가 추출 됬는데도
"잘했어" 만 뜰까요?
댓글 전체