메뉴 건너뛰기

프로그램언어

조회 수 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. No Image 26Mar
    by
    2021/03/26 Views 690 

    PEAR DB 관련 함수들

  2. No Image 26Mar
    by
    2021/03/26 Views 676 

    파일을 변수에 담기(ob_start를 이용한 방법)

  3. 13자리 timestamp 생성하기

  4. No Image 31Dec
    by
    2019/12/31 Views 644 

    PHP 버전이 낮아 imagerotate() 함수가 없을때 대신 사용하는 함수

  5. No Image 26Mar
    by
    2021/03/26 Views 623 

    while, for, foreach 속도 비교

  6. No Image 19Jun
    by
    2020/06/19 Views 619 

    다중 파일을 zip으로 묶어받기

  7. No Image 19Jun
    by
    2020/06/19 Views 618 

    파일 다운로드 함수(멀티 이어받기/속도제한)

  8. No Image 26Mar
    by
    2021/03/26 Views 585 

    서브도메인 세션 공유

  9. No Image 26Mar
    by
    2021/03/26 Views 584 

    알파벳 순서대로 출력하기 ord(), chr()

  10. No Image 26Mar
    by 조쉬
    2021/03/26 Views 564 

    substr(), mb_substr(), iconv_substr()

  11. No Image 26Mar
    by
    2021/03/26 Views 558 

    csv파일 다루기. fputcsv(), fgetcsv()

  12. Javascript 두 좌표 사이의 거리 구하기, 두 좌표의 중앙 좌표 구하기

  13. No Image 22Sep
    by
    2020/09/22 Views 495 

    네이버 지도 API를 이용한 주소를 좌표로 변환하기 (PHP)

  14. No Image 29Mar
    by
    2021/03/29 Views 494 

    CodeIgniter - DB오류체크, 디버깅 여부 설정

  15. No Image 24Aug
    by
    2020/08/24 Views 475 

    사업자등록번호 유효성 체크

  16. No Image 26Mar
    by
    2021/03/26 Views 451 

    배열 더하기 (+ 를 이용한 배열 합치기 )

  17. No Image 19Jun
    by
    2020/06/19 Views 438 

    멀티 파일다운로드 꽁수로 구현하기

  18. No Image 08Jul
    by
    2021/07/08 Views 432 

    주차 , 요일, 해당주의 시작일, 해당주의 종료일 date()

  19. No Image 05Oct
    by
    2020/10/05 Views 431 

    DAUM 지도 API 좌표→주소(주소->좌표) 변환

  20. No Image 23Nov
    by
    2020/11/23 Views 429 

    경로 제외한 파일 이름만 선택하는 방법, Basename()

Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved