PHPプログラミングでは、 str_split()は、指定された長さによって文字列を配列に分割する一般的に使用される関数です。ただし、 STR_SPLIT()関数は、非ASCII文字、特にマルチバイト文字を扱うときに異なる動作をします。マルチバイト文字(中国語、日本、韓国語など)はコンピューターメモリの複数のバイトを占有しますが、ASCII文字は通常、文字ごとに1バイトしか占有しません。この違いにより、 str_split()にはマルチバイト文字の分割に問題がある場合があります。
str_split()関数の構文は次のとおりです。
array str_split ( string $string [, int $length = 1 ] )
$文字列:分割する入力文字列。
$ length :各サブストリングの長さを指定し、デフォルトは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()はそれらをバイトとして処理します。これは、特にマルチバイト文字の真ん中に遭遇する場合、間違った分割につながる可能性があります。
マルチバイト文字を適切に処理するために、PHPは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;
出力: