본문 바로가기

study

mb_substr or iconv_substr 한글문자열 자르기

substr
(PHP 4, PHP 5)

PHP 에서 문자열에서 일부를 잘라내여 쓰고자 할때 사용하는 함수

string substr ( string $string , int $start [, int $length ] )

$string에 담고 있는 문자열의 $start부터 길이$length만큼을 잘라내어 반환합니다.

mb_substr(자를 문자열 , 어디서부터 자를 것인지, 얼마나 자를건지);

어디서부터 자를 것인지 부분은 0부터 시작합니다.

ex) echo mb_substr("안녕하세요.", 0, 2);

안녕

문자열 : http://chongmoa.com
 
<?php $str = "http://chongmoa.com"; // 문자열?>
<?php echo substr($str, 1); ?>  // 반환 :  "ttp://chongmoa.com" ==> 첫번째 문자열을 제외하고 문자열 반환 
<?php echo substr($str, 2); ?>  // 반환 :  "tp://chongmoa.com" ==> 첫번째,두번째 문자열을 제외하고 문자열 반환
<?php echo substr($str, 3); ?>  // 반환 :  "p://chongmoa.com" ==> 첫번째,두번째,세번째 문자열을 제외하고 문자열 반환
<?php echo substr($str, -1); ?>  // 반환 :  "m" ==> 끝에서 -1까지의 구간만 문자열 반환
<?php echo substr($str, -2); ?>  // 반환 :  "om" ==> 끝에서 -1 부터  -2까지의 구간만 문자열 반환
<?php echo substr($str, -3); ?>  // 반환 :  "com" ==> 끝에서 -1 부터  -3까지의 구간만 문자열 반환
<?php echo substr($str, -3, 1); ?> // 반환 :  "c"  ==> 끝에서 -1 ~ -3까지의 구간만 문자열중 첫번째 문자열 반환
 
<?php echo substr($str, 0,-1); ?>  // 반환 :  "http://chongmoa.co" ==> 마지막 문자열을 제외하고 문자열 반환
<?php echo substr($str, 2, -1); ?>  // 반환 :  "tp://chongmoa.co" ==> 2부터 마지막 문자열을 제외하고 문자열 반환 
<?php echo substr($str, 4, -4); ?>  // 반환 :  "://chongmoa" 
<?php echo substr($str, -3, -1); ?>  // 반환 :  "co" 
<?php echo substr($str, 0, 3); ?>  // 반환 :  "htt" ==> 0 부터 3에 해당하는 구간까지 문자열 반환 
<?php echo substr($str, 2, 5); ?>  // 반환 :  "tp://" ==> 2 부터 5에 해당하는 구간까지 문자열 반환
 
// substr

출처: https://jhrun.tistory.com/205 [JHRunning]

 

이는 euc-kr에서는 한글을 2바이트로 처리 / utf-8에서는 3바이트로 처리한다고 한다. 

하여 문자깨짐을 방지하려면 substr 말고 다른 함수를 써야 한다. 

대체 함수로 mb_substr이 있는데 이 함수는 mb_string이 설치되어 있어야 사용가능하여 

 iconv_substr($nickname, 0, 5, "utf-8");

이렇게 처리하면 한글 자르기 할때도 문자가 깨지거나 하는 일은 없다.

사용방법은 

iconv_substr("자르려고 하는 문자열", 시작위치, 자를 위치, "언어셋");
출처: https://ezcode.tistory.com/92 [Ezcode]