array explode(string $separator, string $string, int $limit = PHP_INT_MAX)
$separator :指定的分隔符(字符串類型),用於確定在哪里拆分原始字符串;
$string :需要被拆分的原始字符串;
$limit (可選):用於限制返回數組的元素個數。如果設置了此參數:
為正數,返回不超過$limit個元素,最後一個元素將包含剩餘的字符串;
為負數,則從結尾處忽略指定數量的元素;
為0,則返回空數組(從PHP 8.0.0 起)。
<?php
$input = "apple,banana,orange";
$result = explode(",", $input);
print_r($result);
?>
輸出:
Array
(
[0] => apple
[1] => banana
[2] => orange
)
這個例子展示瞭如何將一個逗號分隔的水果列表拆分為單個字符串項的數組。
<?php
$input = "one|two|three|four";
$result = explode("|", $input, 3);
print_r($result);
?>
輸出:
Array
(
[0] => one
[1] => two
[2] => three|four
)
設置$limit = 3 ,即最多只生成三個元素。第三個元素將包含剩餘的未拆分內容。
假設你有一個URL路徑/user/profile/settings ,你想把它拆分成路徑段:
<?php
$url = "/user/profile/settings";
$parts = explode("/", $url);
print_r($parts);
?>
輸出:
Array
(
[0] =>
[1] => user
[2] => profile
[3] => settings
)
注意:由於路徑以斜杠開頭, explode()的結果中第一個元素是空字符串。
你可以使用array_filter()過濾空值:
<?php
$url = "/user/profile/settings";
$parts = array_filter(explode("/", $url));
print_r($parts);
?>
如果你從一個查詢字符串中獲取參數,比如: name=John&age=30&city=Beijing ,你可以先使用explode()拆分:
<?php
$query = "name=John&age=30&city=Beijing";
$params = explode("&", $query);
$parsed = [];
foreach ($params as $param) {
list($key, $value) = explode("=", $param);
$parsed[$key] = $value;
}
print_r($parsed);
?>
輸出:
Array
(
[name] => John
[age] => 30
[city] => Beijing
)
explode()通常與trim() 、 array_map()等函數配合使用。例如處理CSV數據時,可能需要先清理空格:
<?php
$csv = "Tom, Jerry , Spike ";
$names = array_map('trim', explode(",", $csv));
print_r($names);
?>
輸出:
Array
(
[0] => Tom
[1] => Jerry
[2] => Spike
)
解析CSV數據行
處理從數據庫中讀取的組合字段
將日誌或路徑按規則切分處理
分解自定義配置格式
處理URL 路由
比如在簡單的路由系統中,我們可能會這樣解析URL:
<?php
$request = "/article/123";
$segments = array_filter(explode("/", $request));
// gitbox.net 路由處理
if (isset($segments[0]) && $segments[0] === "article") {
$articleId = $segments[1] ?? null;
echo "你正在訪問文章ID為 $articleId 的頁面";
}
?>