array str_split ( string $string [, int $split_length ] )
(PHP 5)

이 함수는 문자열을 배열로 변환합니다. 일반적으로 split 함수와 비슷하게 동작합니다.

<?php
 $str = "Hello Friend";

 $arr1 = str_split($str); 
 print_r($arr1); 
 /* 
 결과:
 Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => i
    [9] => e
    [10] => n
    [11] => d
 ) 
 */


 // 문자열을 3글자씩 잘라 배열로 반환합니다.
 $arr2 = str_split($str, 3); 
 print_r($arr2); 
 /*
 결과:
 Array
 (
    [0] => Hel
    [1] => lo 
    [2] => Fri
    [3] => end
 )
 */
 ?>

<?php
 function str_rsplit($str, $sz){ 
    if ( !$sz ) {
         return false;
    }
    if ( $sz > 0 ) {
         return str_split($str,$sz);
    }
     
    $l = strlen($str);
    $sz = min(-$sz,$l);
    $mod = $l % $sz;
    
    if ( !$mod ) {
         return str_split($str,$sz);
    }

    return array_merge(array(substr($str,0,$mod)), 
                     str_split(substr($str,$mod),$sz));
 }

 $str = 'aAbBcCdDeEfFg';
 str_split($str,5); // 결과: {'aAbBc','CdDeE','fFg'}
 str_rsplit($str,5); // 결과: {'aAbBc','CdDeE','fFg'}
 // -5 -4 -3 -2 -1 1 ...
 // 음수는 끝에서 개수를 세고
 // -1에서 바로 양수 1로 넘어감
 str_rsplit($str,-5); // 결과: {'aAb','BcCdD','eEfFg'}
 ?>

서버 환경이 PHP 5 이하 버전이라면 다음 함수로 대체할 수 있습니다.

<?php
 if(!function_exists('str_split')){ 
    function str_split($string,$split_length=1){ 
        $count = strlen($string);  
        if($split_length < 1){ 
            return false;  
        } elseif($split_length > $count){ 
            return array($string); 
        } else { 
            $num = (int)ceil($count/$split_length);  
            $ret = array();  
            for($i=0;$i<$num;$i++){  
                $ret[] = substr($string,$i*$split_length,
                                              $split_length);  
            }  
            return $ret; 
        }      
    }  
 }
 ?> 

0 댓글