조회 : 124
//=======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
---=------
아.. 소스 조금 수정되었음
제목 |
---|
[기본형] 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.14
|
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
|