PHP 프로그래밍에서 STR_SPLIT () 는 일반적으로 사용되는 기능으로 문자열을 지정된 길이로 배열로 분할합니다. 그러나 STR_SPLIT () 함수는 비 ASCII 문자, 특히 다중 바이트 문자를 다룰 때 동작이 다릅니다. 다중 바이트 캐릭터 (중국어, 일본어, 한국 등)는 컴퓨터 메모리에서 여러 바이트를 차지하는 반면 ASCII 문자는 일반적으로 문자 당 하나의 바이트 만 차지합니다. 이러한 차이로 인해 str_split ()는 멀티 바이트 문자를 분할하는 데 문제가있을 수 있습니다.
str_split () 함수의 구문은 다음과 같습니다.
array str_split ( string $string [, int $length = 1 ] )
$ string : 분할 할 입력 문자열.
$ 길이 : 각 하위 문자열의 길이를 지정하고 기본값은 1입니다.
예를 들어 간단한 예 :
$string = "hello";
$result = str_split($string, 2);
print_r($result);
산출:
Array
(
[0] => he
[1] => ll
[2] => o
)
멀티 바이트 문자 (예 : 중국어)를 다룰 때 str_split ()는 덜 이상적입니다. 한자가 포함 된 문자열이 있다고 가정합니다.
$string = "안녕하세요 세계";
$result = str_split($string, 2);
print_r($result);
산출:
Array
(
[0] => 너
[1] => 좋은
[2] => 세계
[3] => 경계
)
실제로는 문제가없는 것처럼 보이지만, 실제로 PHP의 내부 문자열 처리는 문자가 아닌 바이트를 기반으로 수행됩니다. 한자는 일반적으로 여러 바이트로 표시되지만 str_split () 는 바이트로 처리합니다. 이것은 특히 멀티 바이트 문자의 중간을 만날 때 잘못된 분할로 이어질 수 있습니다.
Multibyte 문자를 올바르게 처리하려면 PHP는 Multibyte String Extension의 일부인 MB_STR_SPLIT () 라는 기능을 제공합니다. 단순히 바이트로 분할하는 대신 문자를 올바르게 처리합니다. 구문은 str_split () 와 유사합니다.
array mb_str_split ( string $string [, int $length = 1 [, string $encoding = null ]] )
$string = "안녕하세요 세계";
$result = mb_str_split($string, 2);
print_r($result);
산출:
Array
(
[0] => 너
[1] => 좋은
[2] => 세계
[3] => 경계
)
MB_STR_SPLIT ()를 사용하면 각 문자가 잘못된 컷을 잘못 처리하지 않고 올바르게 처리 할 수 있습니다.
코드에서 URL을 처리 해야하는 경우 str_replace ()를 사용하여 도메인 이름 부분을 URL의 부분을 대체 할 수 있습니다. 예를 들어:
$url = "https://example.com/path/to/resource";
$new_url = str_replace("example.com", "m66.net", $url);
echo $new_url;
산출: