현재 위치: > 최신 기사 목록> str_split과 mb_str_split의 차이와 사용 시나리오

str_split과 mb_str_split의 차이와 사용 시나리오

M66 2025-05-28

PHP에서 문자열을 처리 할 때 문자열을 배열로 분할해야합니다. PHP는이 작업을 수행하기 위해 일반적으로 사용되는 두 가지 기능을 제공합니다 : str_split ()mb_str_split () . 비슷한 일을하는 것처럼 보이지만 매우 다릅니다. 다음 으로이 두 기능의 차이점과 다른 시나리오에서 어떤 기능을 사용해야하는지 분석합니다.

1. str_split () 함수

str_split () 함수는 문자열을 지정된 길이의 기판 배열로 나눕니다. 기본 사용량은 다음과 같습니다.

 $string = "HelloWorld";
$result = str_split($string, 2);
print_r($result);

산출:

 Array
(
    [0] => He
    [1] => ll
    [2] => oW
    [3] => or
    [4] => ld
)

위에서 볼 수 있듯이 str_split () 함수는 각 서브 스트링의 길이를 지정하여 문자열을 여러 부분으로 나눕니다. 기본적으로 str_split () 는 하나의 문자로 분할됩니다.

그러나 str_split () 는 바이트를 기준으로 분할되므로 UTF-8 인코딩 된 문자와 같은 멀티 바이트 문자에 친숙하지 않습니다. 문자열에 중국어 또는 다른 비 ASCII 문자와 같은 멀티 바이트 문자가 포함 된 경우 str_split () 의 동작은 예상치 못한 결과를 가질 수 있습니다.

2. MB_STR_SPLIT () 함수

str_split () 와 비교하여 MB_STR_SPLIT () 는 멀티 바이트 문자를 처리하는 데 더 적합합니다. 이 함수는 PHP의 다중 바이트 스트링 확장 (MBString)에 속하며 UTF-8에 인코딩 된 문자열을 올바르게 처리 할 수 ​​있습니다.

 $string = "안녕하세요,세계";
$result = mb_str_split($string, 2, "UTF-8");
print_r($result);

산출:

 Array
(
    [0] => 너
    [1] => 좋은
    [2] => ,
    [3] => 세계
    [4] => 경계
)

이 예에서 MB_STR_SPLIT () 함수는 바이트가 아닌 문자로 문자열을 나누어 다중 바이트 문자 (예 : 중국어)가 올바르게 분할 될 수 있도록합니다.

3. str_split ()mb_str_split () 의 차이

특성 str_split () mb_str_split ()
문자 유형이 처리되었습니다 바이트로 분할 (ASCII 문자에 적합) 문자로 분할 (멀티 바이트 캐릭터에 적합, UTF-8 및 기타 인코딩 지원)
시나리오를 사용하십시오 ASCII 문자 만 포함하는 문자열에 적합합니다 멀티 바이트 문자 (예 : 중국어, 일본어 등)를 포함하는 문자열에 적합)
함수는 확장에 있습니다 PHP 내장 기능 MBString 확장자를 설치하고 활성화해야합니다

4. MB_STR_SPLIT ()를 사용하는시기와 str_split ()를 사용하는시기?

  • ASCII 문자열 만 처리하는 경우 추가 확장에 의존하지 않고 실행이 더 효율적이기 때문에 str_split ()를 사용하는 것이 적절합니다.

  • 문자열에 다중 바이트 문자 (예 : UTF-8 에코딩 된 중국어, 일본어 등)가 포함 된 경우 MB_STR_SPLIT ()를 사용해야합니다. 멀티 바이트 문자를 개별 바이트로 잘못 분할하지 않고 문자별로 올바르게 분할됩니다.

5. 사용시 주목해야 할 문제

  1. MBString 확장을 설치하고 활성화하십시오
    MB_STR_SPLIT () 는 MBString Extension의 함수이므로 사용하기 전에 PHP가 MBString Extension을 설치하고 활성화했는지 확인해야합니다. 설치 여부를 확인할 수 있습니다.

     php -m | grep mbstring
    

    설치되지 않은 경우 다음 명령을 통해 설치할 수 있습니다.

     sudo apt-get install php-mbstring
    
  2. 성능 차이 <br> MB_STR_SPLIT () 는 멀티 바이트 문자를 올바르게 처리 할 수 ​​있지만 문자 인코딩 및 멀티 바이트 문자를 처리해야하기 때문에 성능에서 STR_SPLIT () 보다 약간 열등 할 수 있습니다.

6. 샘플 코드

URL이 포함 된 문자열이 있다고 가정하여 도메인 부품을 분할하고 수정하려고합니다. 이 예에서는 MB_STR_SPLIT ()를 사용하여 문자열이 문자로 올바르게 나뉘어 지도록합니다.

 // 원래 문자열
$url = "https://www.example.com/path/to/resource";

// 도메인 이름을 바꾸십시오
$parsed_url = parse_url($url);
$domain = "m66.net"; // 새로운 도메인 이름
$new_url = str_replace($parsed_url['host'], $domain, $url);

// 캐릭터별로 새로운 캐릭터를 분할하십시오 URL
$result = mb_str_split($new_url, 3, "UTF-8");

print_r($result);

산출: