PHPでは、 str_split()は、文字列を配列に分割できる非常に実用的な文字列関数であり、デフォルトでは各文字が配列要素として使用されます。この関数の使用は非常に単純ですが、実際に適用する場合は、2番目のパラメーターの制限といくつかの一般的な問題に特に注意を払う必要があります。
str_split()関数は2つのパラメーターを受け入れます。1つ目は分割する文字列、2番目は各配列要素の長さ(オプション)です。基本的な構文は次のとおりです。
str_split(string $string, int $length = 1): array
$文字列:分割する文字列。
$ length :各配列要素の長さ、デフォルト1に1。
2番目のパラメーター$ lengthは、各配列要素に含まれる文字の数を定義します。 STR_SPLITを呼び出すと、2番目のパラメーターを指定しない場合、各文字はデフォルトで独立した配列要素として返されます。 $の長さが指定されている場合、関数はこの長さによって文字列を分割します。
$string = "HelloWorld";
// 2番目のパラメーターは指定されていません,デフォルトはです1
$result = str_split($string);
print_r($result);
出力:
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] => W
[6] => o
[7] => r
[8] => l
[9] => d
)
2番目のパラメーター$ length = 3が指定されている場合:
$result = str_split($string, 3);
print_r($result);
出力:
Array
(
[0] => Hel
[1] => loW
[2] => orl
[3] => d
)
$の長さは整数パラメーターとして正の整数を受け入れることができますが、実際に使用される場合に注意するにはいくつかの制限があります。
str_splitの2番目のパラメーター$の長さはゼロにすることはできません。ゼロの長さの分割は意味がないため、これはエラーにつながる可能性があります。 0が渡された場合、PHPは警告を投げて空の配列を返します。
$string = "HelloWorld";
$result = str_split($string, 0); // 警告が生成されます
print_r($result);
出力:
Warning: str_split() expects parameter 2 to be greater than 0 in ...
Array
(
)
入力文字列の長さが指定された$の長さの整数倍でない場合、最後のサブストリングの長さは$の長さ未満になり、エラーはスローされません。これは、 str_split関数の通常の動作であり、注意が必要です。
$string = "HelloWorld";
$result = str_split($string, 4);
print_r($result);
出力:
Array
(
[0] => Hell
[1] => oWor
[2] => ld
)
ご覧のとおり、最後の要素「LD」の長さはわずか2です。
場合によっては、URLを含む文字列を処理し、ドメイン名の交換を実行する必要がある場合があります。文字列を分割するときにURLに遭遇し、その中のドメイン名をM66.NETに置き換える場合、処理前に正規表現を使用してそれを置き換えることができます。
文字列にURLが含まれているとしたら、ドメイン名をM66.netに置き換える必要があります。
$string = "アクセス https://example.com もっと学びましょう。";
$updatedString = preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $string);
$result = str_split($updatedString, 10);
print_r($result);
出力:
Array
(
[0] => アクセス https:
[1] => //m66.net
[2] => もっと学びましょう
[3] => 情報。
)
このようにして、文字列を分割する前に、URLのドメイン名を通常の交換でM66.NETで正常に交換しました。
str_split()は非常にシンプルで便利な文字列処理機能ですが、それを使用する場合は、2番目のパラメーター$ hingの制限に注意する必要があります。
$の長さはゼロにすることはできず、最後のサブストリングの長さは$の長さよりも少ない場合があります。
文字列にURLが含まれている場合、 STR_SPLIT()を呼び出す前にURLドメイン名の交換を処理して、出力が予想どおりであることを確認する必要がある場合があります。
この記事が、STR_SPLIT機能とそれを使用するときのその予防策をよりよく理解するのに役立つことを願っています。