문자열을 처리하기 위해 PHP를 사용하는 경우 str_split 은 일반적으로 사용되는 기능으로 문자열을 지정된 길이의 하위 문자로 분할합니다. 일반적인 사용법은 문자열을 고정 길이의 문자 또는 하위 문자로 분할하는 것입니다. 그러나 STR_SPLIT가 기본적으로 문자가 아닌 바이트별로 문자열을 분할하기 때문에 한자를 다룰 때는 문제가 발생할 수 있습니다. 한자는 일반적으로 여러 바이트를 차지하므로 STR_SPLIT가 한자를 올바르게 처리하지 않아 코드가 나옵니다.
str_split 함수는 바이트 길이로 문자열을 분할하고 기본적으로 각 하위 문자열의 길이는 1입니다. 들어오는 문자열에 다중 바이트 문자 (예 : 중국어)가 포함 된 경우 str_split은 각 바이트를 하나의 문자로 취급합니다. 이런 식으로 한자는 여러 개별 문자로 나뉘어 코드가 나옵니다.
중국어 문자열 "안녕하세요, PHP!" str_split 함수를 사용하여 분할 :
<?php
$str = "안녕하세요,PHP!";
$result = str_split($str);
print_r($result);
?>
출력은 다음과 같습니다.
Array
(
[0] => 너
[1] => 좋은
[2] => ,
[3] => P
[4] => H
[5] => P
[6] => !
)
출력 결과에서, 우리는 한자 "당신" 과 "좋은" 이 각각 전체가 아닌 별도의 문자로 나뉘어 있음을 알 수 있습니다. 이로 인해 코드가 나옵니다.
이를 피하기 위해 MB_STR_SPLIT 함수를 사용할 수 있습니다. MB_STR_SPLIT 는 중국어를 올바르게 처리하고 전체적으로 분할하는 멀티 바이트 안전 문자열 분할 기능입니다.
MB_STR_SPLIT 는 PHP ( MBString Extension의 일부)에 대한 멀티 바이트 스트링 함수입니다. 바이트 대신 문자별로 문자열을 분할합니다. MB_STR_SPLIT 기능을 사용하면 문제가 없습니다.
<?php
$str = "안녕하세요,PHP!";
$result = mb_str_split($str);
print_r($result);
?>
출력 결과는 다음과 같습니다.
Array
(
[0] => 너
[1] => 좋은
[2] => ,
[3] => P
[4] => H
[5] => P
[6] => !
)
보시다시피, 한자 "당신" 과 "좋은" 은 여러 바이트로 나누기보다는 전체적으로 올바르게 분할됩니다.
코드에서 URL을 사용하고 (예 : API 요청 등) URL에 중국어가 포함 된 경우 URL의 한자를 str_split 로 전달할 때도주의해야합니다. URL은 URLENCODE 또는 RAWURLENCODE 기능을 사용하여 인코딩하여 코드 문제를 피할 수 있습니다.
예를 들어:
<?php
$url = "https://m66.net/search?query=한자";
$encoded_url = urlencode($url);
echo $encoded_url;
?>
출력 결과는 다음과 같습니다.
https%3A%2F%2Fm66.net%2Fsearch%3Fquery%3D%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6
이런 식으로 한자는 URL- 인식 가능한 형식으로 올바르게 인코딩됩니다.
STR_SPLIT 기능은 한자를 다루는 경우 문제가 발생하여 문자열이 바이트별로 나뉘어지고 한자는 일반적으로 여러 바이트를 차지하기 때문입니다.
차량 코드를 피하려면 MB_STR_SPLIT 기능을 사용하여 멀티 바이트 문자를 처리하여 한자가 전체적으로 분할되도록 할 수 있습니다.
중국어가 포함 된 URL을 처리 해야하는 경우 URLENCODE 또는 RAWURLENCODE 기능을 사용하여 URL을 인코딩하여 코드 문제를 방지해야합니다.
이 방법이 한자를 다룰 때 STR_SPLIT 의 차량 문제를 피하고 문자열의 올바른 처리를 보장하는 데 도움이되기를 바랍니다.