메뉴 건너뛰기

프로그램언어

조회 수 564 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

3가지 함수는 해당 문자열을 원하는 길이만큼 잘라서 반환 시켜 주는 기능을 하는 함수이다.

우선 파라미터를 보면, 아래와 같다.

substr( "문자열", "자르기 시작할위치", ["반환될길이"] ); //PHP4.0이상
mb_substr( "문자열", "자르기 시작할위치", ["반환될길이"], ["문자인코딩"]); //PHP4.0이상  
iconv_substr( "문자열", "자르기 시작할위치", ["반환될길이"], ["문자인코딩"] ); //PHP 5.0이상


보통 substr을 쓰면 영문자는 잘 잘라질것이다. 하지만 한글을 자르면 잘리는 끝부분의 한글이 깨져나오는것을 종종 볼수 있을것이다. substr이 1byte씩 자르기 때문에, 2byte인 한글이 깨지곤 하는것인데, 그래서 필요한것이 mb_substr(), iconv_substr() 이다.
두 함수의 마지막에 "UTF-8" 과 같은 해당 페이지의 인코딩을 넣어주면, 한글도 안깨지고 잘 잘려서 나오는 것을 볼수 있을 것이다.

해당 자르기 함수들에 대한 좀더 자세한 사용법은(뒤에서부터 자른다던가, 하는식으로도 사용가능 하니까..) 아래의 substr() 메뉴얼을 참조하기 바란다. 인코딩이 포함된다는것 빼고는 3가지 함수의 기본 자르기 사용법은 같다.
참조 : http://php.net/manual/kr/function.substr.php

자 그럼 3가지 함수의 가장 큰 차이점은 뭘까? 사실 필자도.. 잘 모르겠다.. 특히 mb_substr()과 iconv_substr()은.. 기능적으로는.. 차이도 없는거 같고 말이다.
하지만, 함수 내부적으로는 차이가 꾀 있나 보다. 아래의 소스를 보자

$str = str_repeat("b1ix",100000);

$time = microtime(true);
iconv_substr($str,1000,90000,'UTF-8');
echo "iconv_substr : " . (microtime(true)-$time) . "<br><br>";
 
$time = microtime(true);
mb_substr($str,1000,90000,'UTF-8');
echo "mb_substr : " . (microtime(true)-$time) . "<br><br>";

$time = microtime(true);
substr($str,1000,90000);
echo "substr : " . (microtime(true)-$time) . "<br><br>";
 
iconv_substr : 0.0253469944

mb_substr : 0.000370025634766

substr : 1.19209289551E-5

대충 설명하자면, 위의 소스는 각함수의 실행시간을 micro타임으로 잰것이다.
뭐 php 버전이나 사용자의 환경에 따라서 iconv_substr()이 substr()보다 더 오래 걸리는 경우도 있다고 하는데, mb_substr()은 항상 제일 빠르다고 한다.
참고 : http://css.dzone.com/news/iconvsubstr-vs-mbstringsubstr

더 자세히 알고 싶다면, 위 링크들에서 알아보기 바란다.


  1. while, for, foreach 속도 비교

    Date2021.03.26 Views623
    Read More
  2. utf-8 문자열을 주어진 바이트로 자르기

    Date2019.04.29 Views1356
    Read More
  3. TIME_TO_SEC 시간 포맷

    Date2019.01.16 Views1381
    Read More
  4. TIFF, GIF 여러장 변환

    Date2021.03.26 Views323
    Read More
  5. text파일에 한줄씩 내용추가하기

    Date2017.03.06 Views17537
    Read More
  6. Text를 GD 이미지로 뿌리기

    Date2014.02.27 Views29813
    Read More
  7. substr(), mb_substr(), iconv_substr()

    Date2021.03.26 Views564
    Read More
  8. stripslashes — 따옴표 처리한 문자열을 풉니다

    Date2016.12.23 Views20486
    Read More
  9. stripcslashes — addcslashes()로 인용한 문자열을 되돌림

    Date2016.12.23 Views20442
    Read More
  10. RSSReader Class 제작 및 Reader 만들기

    Date2016.08.22 Views21042
    Read More
  11. RSS json_decone 사용방법

    Date2019.01.16 Views1430
    Read More
  12. Record Drag/Drop Position

    Date2014.02.27 Views29201
    Read More
  13. quotemeta 모든 메타 문자앞에 역슬래쉬를 붙인 문자열을 반환

    Date2016.12.23 Views20461
    Read More
  14. printf() sprintf()

    Date2021.03.26 Views272
    Read More
  15. preg_match (정규표현식 매치를 수행합니다)

    Date2016.12.23 Views20843
    Read More
  16. Predefined Variables (미리 정의된 변수들)

    Date2021.03.26 Views274
    Read More
  17. POST값 통째로 인코딩하기

    Date2015.04.06 Views21175
    Read More
  18. POST, GET으로 배열값 받기(직렬화)

    Date2017.03.06 Views23286
    Read More
  19. php한글체크를 위한 정규표현식

    Date2014.04.12 Views22458
    Read More
  20. PHP폼 사용시 폼 양식에서 값이 사라질때

    Date2019.01.08 Views1316
    Read More
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved