PHPのexploit()関数を使用する場合、多くの開発者は、結果の配列の長さが期待を満たさない状況に遭遇する可能性があります。 exploit()関数の目的は、文字列を複数のサブストリングに分割し、配列を返すことです。理論的には、 exploit()関数は、文字列を区切り文字に囲まれた複数の部分に分割し、正しい長さの配列を返す必要があります。ただし、返された配列の長さが予想通りではない場合があり、これの原因は通常、いくつかの詳細が原因であるため、この記事は一般的な原因を分析します。
exploit()関数の基本的な構文は次のとおりです。
array explode(string $delimiter, string $string[, int $limit = PHP_INT_MAX])
$ delimiter :区切り、文字列を分割するために使用されます。
$文字列:分割する文字列。
$制限(オプション):返された配列の長さを制限します。 $制限が設定されていない場合、すべての分割部品が返されます。
$string = "apple,banana,orange";
$result = explode(",", $string);
print_r($result);
出力は次のとおりです。
Array
(
[0] => apple
[1] => banana
[2] => orange
)
ただし、実際のアプリケーションでは、私たちを混乱させるいくつかの状況に遭遇する可能性があり、結果の配列の長さは予想どおりに分割されない場合があります。次に、いくつかの一般的な状況を分析します。
$ delimiterが空の文字列である場合、または$ delimiterが$ stringに存在しない場合、 exploit()関数は元の文字列を含む配列を返します。例えば:
$string = "apple,banana,orange";
$result = explode("", $string); // delimiter is an empty string
print_r($result);
この例では、区切り文字は空の文字列であるため、返された配列には各文字が配列要素として含まれます。
分割する文字列$文字列が空の場合、または空白文字(スペース、ラインブレークなど)が含まれている場合、 exploit()は長さ1の配列を返し、配列の唯一の要素は元の文字列です。これは、文字列を分割する有効な区切り文字がないためです。
$string = "";
$result = explode(",", $string);
print_r($result);
出力の結果は次のとおりです。
Array
(
[0] =>
)
同様に、文字列が「」などの白人文字のみで構成されている場合、 exploit()は、空白文字によって空の文字列を含む配列を返します。
限界パラメーターは、exploit()関数の非常に重要なパラメーターです。 $制限が設定されている場合、返された配列の長さはそれによって制限されます。たとえば、 $制限が分割される部品の数よりも少ない場合、アレイの最後の要素には残りのすべての部品が含まれます。
$string = "apple,banana,orange,grape";
$result = explode(",", $string, 3);
print_r($result);
出力結果:
Array
(
[0] => apple
[1] => banana
[2] => orange,grape
)
上記のように、制限設定により、返された配列には3つの要素のみが含まれ、最後の要素にはすべての残りの部分が含まれます。
文字列の尾にセパレーターが含まれている場合、 exploit()はアレイの要素としてテールの空の文字列を使用します。たとえば、文字列が「Apple、Banana」であり、区切り文字がexploit()である場合、最後に空の要素が追加されます。
$string = "apple,banana,";
$result = explode(",", $string);
print_r($result);
出力の結果は次のとおりです。
Array
(
[0] => apple
[1] => banana
[2] =>
)
この場合、空の要素の終わりを期待していない場合、アレイの長さに追加の要素が追加されます。
分割する文字列に複数の連続したセパレーターがある場合、 exploit()はこれらの連続したセパレータを複数のセパレーターとして扱い、その結果、空の文字列の配列要素が生成されます。
例えば:
$string = "apple,,banana,,orange";
$result = explode(",", $string);
print_r($result);
出力の結果は次のとおりです。
Array
(
[0] => apple
[1] =>
[2] => banana
[3] =>
[4] => orange
)
ここで複数の連続したコンマがアレイに複数の空の要素を引き起こします。
関連タグ:
explode