php 实现explode
使用 PHP 实现字符串分割
PHP 内置的 explode 函数用于将字符串按指定分隔符拆分为数组。以下是实现类似功能的几种方法:
自定义 explode 函数
可以手动实现一个类似 explode 的函数,使用循环和字符串查找功能:
function customExplode($delimiter, $string, $limit = PHP_INT_MAX) {
$result = array();
$current = '';
$count = 0;
$delimiterLength = strlen($delimiter);
for ($i = 0; $i < strlen($string); $i++) {
$match = true;
for ($j = 0; $j < $delimiterLength; $j++) {
if ($string[$i + $j] != $delimiter[$j]) {
$match = false;
break;
}
}
if ($match && $count < $limit - 1) {
$result[] = $current;
$current = '';
$i += $delimiterLength - 1;
$count++;
} else {
$current .= $string[$i];
}
}
$result[] = $current;
return $result;
}
使用 preg_split 函数
PHP 的 preg_split 函数可以实现更复杂的分割逻辑,支持正则表达式:

$string = "apple,banana,orange";
$array = preg_split("/,/", $string);
使用 strtok 函数
strtok 函数可以逐个获取分割后的字符串片段:
$string = "apple,banana,orange";
$token = strtok($string, ",");
while ($token !== false) {
echo $token . "\n";
$token = strtok(",");
}
使用 substr 和 strpos 组合
通过字符串位置查找和截取实现分割:

function substrExplode($delimiter, $string) {
$result = array();
$pos = 0;
$delimiterLength = strlen($delimiter);
while (($found = strpos($string, $delimiter, $pos)) !== false) {
$result[] = substr($string, $pos, $found - $pos);
$pos = $found + $delimiterLength;
}
$result[] = substr($string, $pos);
return $result;
}
性能考虑
内置的 explode 函数是编译过的 C 代码,性能通常优于 PHP 实现的版本。在大多数情况下,直接使用 explode 是最佳选择。
特殊分隔符处理
对于多字符分隔符或需要正则表达式的情况,preg_split 提供了更灵活的解决方案。空分隔符时,explode 会将字符串拆分为单个字符数组。
以上方法可以根据具体需求选择使用,内置函数通常提供最佳性能和可靠性。






