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 的页面";
}
?>