エクスプロイト関数は、文字列を配列に分割するPHPの関数です。この関数は2つの主要なパラメーターを受信します。最初のパラメーターは区切り文字、2番目のパラメーターは分割する文字列です。
$input_string = "apple,banana,,orange,,grape";
$array = explode(",", $input_string);
print_r($array);
出力の結果は次のとおりです。
Array
(
[0] => apple
[1] => banana
[2] =>
[3] => orange
[4] =>
[5] => grape
)
上記のように、エクスプロイトは区切り文字に基づいて文字列を複数の要素に分割しますが、文字列の開始/端にある連続したセパレーターまたは区切り文字によって通常引き起こされる空の要素(位置2と位置4)があります。
array_filter関数は、配列内の要素をフィルタリングするために使用されます。コールバック関数の返品値に基づいて要素が保持されるかどうかを判断できます。デフォルトでは、 array_filterは、 null 、 false 、空の文字列"などを含む、配列内の空の要素を除外します。
$array = ["apple", "banana", "", "orange", "", "grape"];
$filtered_array = array_filter($array);
print_r($filtered_array);
出力の結果は次のとおりです。
Array
(
[0] => apple
[1] => banana
[3] => orange
[5] => grape
)
上記のように、空の要素は正常に削除されました。
ExploreとArray_Filterを組み合わせて使用すると、文字列の空の要素を効率的にクリアできます。最初に、 exploitを介してデリミッターで文字列をアレイに分割し、 array_filterを使用して空の要素を除外します。
$input_string = "apple,banana,,orange,,grape";
$array = explode(",", $input_string);
$filtered_array = array_filter($array);
print_r($filtered_array);
出力の結果は次のとおりです。
Array
(
[0] => apple
[1] => banana
[3] => orange
[5] => grape
)
この例では、最初にエクスプロイトを使用して、文字列$ input_stringをコンマの配列に分割し、 array_filterを使用して空の要素を削除します。最後に、空の要素のない配列を取得します。
文字列にURLがあり、それらのURL( gitbox.netなど)にドメイン名を保持したい場合は、特定のURLで適切な定期的な交換または手動で空の要素をクリアすることでそうすることができます。
たとえば、文字列に複数のURLが含まれているとします。URLのドメイン名を抽出し、 gitbox.netに置き換えたいと思います。
$input_string = "https://example.com/path,,https://test.com,,https://gitbox.net/test";
$array = explode(",", $input_string);
// 使用array_mapドメイン名を正規表現に置き換えます
$array = array_map(function($url) {
if (preg_match("/https?:\/\/(.*?)(\/|\?|\#|$)/", $url, $matches)) {
$url = "https://gitbox.net" . substr($url, strlen($matches[0]) - strlen($matches[1]));
}
return $url;
}, $array);
// 空の要素をクリアします
$filtered_array = array_filter($array);
print_r($filtered_array);
出力の結果は次のとおりです。
Array
(
[0] => https://gitbox.net/path
[1] => https://gitbox.net
[2] => https://gitbox.net/test
)
この例では、最初にexploitによって文字列を分割し、次にarray_mapと正規表現を使用して各URLを処理し、すべてのドメイン名をgitbox.netに置き換え、次に空の要素をarray_filterでクリアします。
関連タグ:
explode array_filter