php 实现explode
PHP 实现 explode 函数
explode 是 PHP 中用于将字符串按指定分隔符拆分为数组的函数。以下是其基本用法和实现原理:
基本语法
array explode(string $delimiter, string $string, int $limit = PHP_INT_MAX)
$delimiter:分隔符,用于拆分字符串。$string:待拆分的字符串。$limit(可选):限制返回数组的最大长度。
实现逻辑
-
分隔符检查
若分隔符为空字符串 (""),explode会触发警告并返回false。 -
字符串遍历
遍历字符串,查找分隔符的位置,将分隔符之间的子字符串存入数组。 -
限制处理
若指定$limit,数组的最后一项将包含剩余的未拆分部分。
代码示例
function customExplode($delimiter, $string, $limit = PHP_INT_MAX) {
if ($delimiter === "") {
trigger_error("Empty delimiter", E_USER_WARNING);
return false;
}
$result = [];
$length = strlen($delimiter);
$pos = 0;
$count = 0;
while (($found = strpos($string, $delimiter, $pos)) !== false && $count < $limit - 1) {
$result[] = substr($string, $pos, $found - $pos);
$pos = $found + $length;
$count++;
}
$result[] = substr($string, $pos);
return $result;
}
// 示例用法
$str = "apple,banana,cherry";
$arr = customExplode(",", $str);
print_r($arr); // 输出: Array ( [0] => apple [1] => banana [2] => cherry )
参数说明
$limit为正值:返回数组最多包含$limit个元素,最后一个元素包含剩余部分。$limit为负值:返回除最后abs($limit)个元素外的所有部分。$limit为 0:与1相同,返回包含整个字符串的数组。
边界情况
- 若分隔符不存在于字符串中,返回包含原字符串的数组。
- 若
$limit为0或1,返回的数组仅包含原始字符串。
通过以上方法,可以模拟 PHP 内置 explode 函数的核心功能。







