explode

义项:PHP 函数
explode

explode是PHP脚本语言内置的字符串处理函数,作用是以指定的分隔字符串为边界,把一个字符串切分成由若干子串组成的数组[1]。它常被用来解析逗号分隔的数据、路径、URI 或配置文件行等结构化文本,是字符串与数组之间互相转换的基础工具之一,与其逆向操作函数 implode 相对[2]。该函数属于 PHP 4 及之后各主要版本的标准字符串扩展,并具备二进制安全特性[1]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

explode 是 PHP 标准字符串函数库中的一个内置函数,签名形式为 explode(separator, string, limit),返回值为数组类型[1]。函数的语义是:以参数 separator 给出的字符串作为边界,把参数 string 切成若干片段,再按出现顺序放入返回的数组[1]。官方手册把这一行为概括为“按字符串分割字符串”[1]。

第二个参数是待处理的原始字符串,第一个参数则决定切割位置,两者的顺序不可互换[1]。第三个参数 limit 为可选,用来限制返回数组的元素个数,省略时默认取 PHP_INT_MAX,相当于不限制[3]。手册特别说明,尽管 implode 出于历史原因允许两种参数顺序,explode 从未支持过参数换位[1]。

原理

从执行过程看,explode 在原始字符串中查找分隔串首次出现的位置,把该位置之前的片段放入结果数组,然后从分隔串之后继续向后搜索,如此反复直到字符串末尾[2]。若某个分隔串在字符串中完全找不到,函数不会报错,而是返回只含 1 个元素的数组,该元素即原字符串本身[1]。若分隔串恰好位于字符串开头或结尾,切分后会在结果数组的首位或末位留下一个空字符串元素[1]。

limit 参数改变截断方式。取正数 $n$ 时,数组最多含 $n$ 项,剩余内容全部并入最后一项;取负数 $-n$ 时,返回的是去掉末尾 $n$ 项之后的部分;取 0 则按 1 处理[1]。下面的示意给出正负 limit 的差异:


$str = 'one|two|three|four';

explode('|', $str, 2) → ['one', 'two|three|four']

explode('|', $str, -1) → ['one', 'two', 'three']

手册注明该函数是二进制安全的,即字符串中出现空字节时不会截断切分结果,因此也可用于处理非文本数据[1]。

发展历程

explode 自 PHP 4 起即存在于标准函数集中,手册的版本标识把它列为适用于 PHP 4、PHP 5、PHP 7 和 PHP 8[1]。更早的 PHP 3 手册中已有同名函数条目,说明其接口在早期版本中就基本成型[4]。

可选参数 limit 是后续补充的功能。中文手册的更新日志显示,PHP 4.0.1 增加了 limit 参数,PHP 5.1.0 起支持负数的 limit[5]。

PHP 8.0.0 改变了异常处理方式:当 separator 传入空字符串时,函数改为抛出 ValueError,而在此之前它返回的是 false[1]。这一变更使错误更早暴露,也使返回类型在正常路径下稳定为数组。

应用

最常见的用法是把带固定分隔符的文本拆成数组,例如把空格分隔的句子拆成单词列表,或把以冒号分隔的系统账户行拆成多个字段,再配合 list 解构直接赋值给变量[1]。由于 PHP 中数组与字符串的互转非常频繁,该函数常与 implode 成对使用,一个负责拆分、一个负责拼回[2]。

正数 limit 在只需要前几个字段时很有用。手册示例中把 one|two|three|four 以 2 为上限切分,得到 ['one', 'two|three|four'],从而保留未被拆开的尾部内容[1]。负数 limit 则适合丢弃末尾若干无意义的片段,例如去掉末位空字段[5]。

局限

explode 只能按字面分隔串切分,分隔符本身不能是一个模式,因此处理不定数量的空白、多种可能的分隔字符或带引号转义的字段格式时并不适用,此类场景需要改用 正则表达式 分割函数 preg_split[1]。同样,它无法像 strtok 那样做流式的分词处理[1]。

空输入的处理容易引起误判。手册的用户注释指出,对空字符串调用 explode 仍会得到含 1 个空字符串元素的数组,而不是空数组,遇到未知输入时需要额外判断[1]。此外,分隔串在待处理字符串中不存在且 limit 为负数时,返回的是空数组,这一分支与常规返回不同[1]。

参数顺序固定也构成使用约束,写成 explode($str, ',') 这样的换位调用不会得到预期结果[1]。在 PHP 8.0 之前,传入空分隔串只会得到 false,代码若不检查类型直接当作数组使用,可能引发后续错误[5]。

参见

  • PHP —— explode 所属的脚本语言及其标准函数库

  • implode —— explode 的逆向操作,把数组元素连接成字符串

  • 正则表达式 —— preg_split 等函数用来描述分割模式的基础

  • 数组 —— explode 的返回值类型

  • 字符串 —— explode 的输入与输出元素类型

参考资料

  1. explode [引用日期2026-10-29]
  2. [PHP源码阅读]explode和implode函数 [引用日期2026-10-29]
  3. explode [引用日期2026-10-29]
  4. explode [引用日期2026-10-29]
  5. explode [引用日期2026-10-29]
词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:25:48Z

历史版本

本条目引用的词条
PHP 正则表达式 implode 数组 字符串