PHPAPI void php_explode(zval *delim, zval *str, zval *return_value, long limit)php
{spa
char *p1, *p2, *endp;string
endp = Z_STRVAL_P(str) + Z_STRLEN_P(str);it
p1 = Z_STRVAL_P(str);io
p2 = php_memnstr(Z_STRVAL_P(str), Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp);function
if (p2 == NULL) {im
add_next_index_stringl(return_value, p1, Z_STRLEN_P(str), 1);next
} else {while
do {cas
add_next_index_stringl(return_value, p1, p2 - p1, 1);
p1 = p2 + Z_STRLEN_P(delim);
} while ((p2 = php_memnstr(p1, Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp)) != NULL &&
--limit > 1);
if (p1 <= endp)
add_next_index_stringl(return_value, p1, endp-p1, 1);
}
}
<?php
function php_explode($delim, $str)
{
if(!$delim){
return false;
}
$delim = strval($delim);
$str = strval($str);
if(!$delim || !$str){
return false;
}
$delim_len = strlen($delim);
$str_len = strlen($str);
if($delim_len > $str_len){
return false;
}
$ret = array();
$check_len = $str_len-$delim_len;
for($p=0,$i=0;$i<=$check_len;){
$tmp = substr($str,$i,$delim_len);
if(strcasecmp($tmp,$delim)==0){
if($i>$p){
$ret[] = substr($str,$p,$i-$p);
}else{
$ret[] = '';
}
$i+=$delim_len;
$p=$i;
}else{
++$i;
}
}
if($p<$i){
$ret[] = substr($str,$p);
}else{
$ret[] = '';
}
return $ret;
}