PHPAPI void php_explode(zval *delim, zval *str, zval *return_value, long limit)
{
char *p1, *p2, *endp;
endp = Z_STRVAL_P(str) + Z_STRLEN_P(str);
p1 = Z_STRVAL_P(str);
p2 = php_memnstr(Z_STRVAL_P(str), Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp);
if (p2 == NULL) {
add_next_index_stringl(return_value, p1, Z_STRLEN_P(str), 1);
} else {
do {
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);
}
}
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
$ret[] = substr($str,$p);
}else{
$ret[] = '';
}
return $ret;
}