PHP용 utf8 문자열 제어함수 (mb함수등이 지원 안될때)

//=======utf8 문자열 처리함수=============
//utf8문자열을 배열로 만든다.
function php_fn_utf8_to_array($str){
 $re_arr = array(); $re_icount = 0;
 for($i=0,$m=strlen($str);$i<$m;$i++){
  $ch = ord($str{$i});
  if($ch<128){$re_arr[$re_icount++]=substr($str,$i,1);}  
  else if($ch<224){$re_arr[$re_icount++]=substr($str,$i,2);$i+=1;}  
  else if($ch<240){$re_arr[$re_icount++]=substr($str,$i,3);$i+=2;}  
  else if($ch<248){$re_arr[$re_icount++]=substr($str,$i,4);$i+=3;}  
 }
 return $re_arr;
}
//utf8문자열을 잘라낸다.
function php_fn_utf8_substr($str,$start,$length=NULL){
    return implode('',array_slice(php_fn_utf8_to_array($str),$start,$length));
}
//utf8문자열의 길이를 구한다.
function php_fn_utf8_strlen($str){
    return count(php_fn_utf8_to_array($str));
}

--------------------------------------------------------------------------------
ex>

$str = 'utf8뷁. 공대x여자.쿵.뷁';
print '문자열 : '.$str.'<br>';
print '문자열 자르기 : '.php_fn_utf8_substr($str ,2,10).'<br/>';
print '문자열 길이 : '.php_fn_utf8_strlen($str ).'<br/>';

출력->

문자열 : utf8뷁. 공대x여자.쿵.뷁
문자열 자르기 : f8뷁. 공대x여자
문자열 길이 : 16



--------------------------------------------------------------------------------

UTF-8 전용함수입니다.
EUC-KR등에서 사용하실 때는 incov로 우선 utf-8로 바꾼 후 사용해주세요.

 

 

제약 : "공대여자는 예쁘다."라는 질문에 "당근이지!" 또는 유사 답변을 할 수 있어야 사용할 수 있습니다.

----------=---------------
참고로 밑의 행복한 고니님과는 알고리즘이 다릅니다.
제가 사용한 방법은 문자를 1바이트씩 쪼개서 utf8규칙에 맞도록 다시 배열로 만들어서 처리하는 방식입니다.
그렇기 때문에 한글이든 일어든 utf-8문자열이기만 하면 전부 1글자처럼 취급할 수 있도록 만들어졌습니다.
---------=---------------
전에 어떤 클래스로 utf8문자열 길이,자르기를 구현했는데
솔찍히 그 클래스 너무 큰것 같아서 그냥 만들어 봤습니다.
찾아보면 이와 유사한 함수도 많을겁니다.

http://www.mins01.com/20070305/m_board/tech.php?b_id=tech&type=read&b_idx=418&page=1&period=365

---=------
아.. 소스 조금 수정되었음

댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
4.28
4.29
4.30
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.11
5.12
5.13
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
6.1