[PHP源码阅读]explode和implode函数,explodeimplode_PHP教程
程序员文章站
2022-05-09 14:55:39
...
[PHP源码阅读]explode和implode函数,explodeimplode
explode和implode函数主要用作字符串-数组的操作,比如获取一段参数后根据某个字符分割字符串,或者将一个数组的结果使用一个字符合并成一个字符串输出。在PHP中经常会用到这两个函数,因此有必要了解一下其原理。
explode
array explode ( string $delimiter, string $string, [ , $limit ] )
返回由字符串组成的数组,每个元素都是string的一个子串,被字符串$delimiter作为边界点分割出来。
$limit
如果设置了$limit,且为正数,则返回的数组最多包含$limit个元素,最后的那个元素将包含$string的剩余部分。
如果$limit是负数,则返回除了最后的-$limit个元素外的所有元素。
如果$limit是0,则会被当做1。
$delimiter
如果$delimiter为空,则函数返回FALSE。如果delimiter不在string中,且$limit为负数,则返回空数组。
核心源码
// 如果delimiter为空字符串,返回FALSE if (delim_len == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter"); RETURN_FALSE; } // 初始化返回的数组 array_init(return_value); if (str_len == 0) { if (limit >= 0) { // 如果字符串为空且limit大于等于0,则返回一个包含空字符串的数组,注意此处sizeof("") == 1 add_next_index_stringl(return_value, "", sizeof("") - 1, 1); } return; } // 初始化zstr和zdelim的字符串变量 ZVAL_STRINGL(&zstr, str, str_len, 0); ZVAL_STRINGL(&zdelim, delim, delim_len, 0); if (limit > 1) { // limit大于1,limit默认是LONG_MAX php_explode(&zdelim, &zstr, return_value, limit); } else if (limit 0
推荐阅读
-
PHP explode()函数的几个应用和implode()函数有什么区别
-
[PHP源码阅读]array_pop和array_shift函数,jsarraypopshift_PHP教程
-
explode和implode函数 explode implode cad explode php explode函数
-
[PHP源码阅读]array_pop和array_shift函数,jsarraypopshift
-
PHP explode()函数的几个应用和implode()函数有什么区别
-
[PHP源码阅读]array_slice和array_splice函数,slicesplice
-
[PHP源码阅读]array_slice和array_splice函数,slicesplice_PHP教程
-
[PHP源码阅读]empty和isset函数,emptyisset_PHP教程
-
[PHP源码阅读]count函数,php源码count函数_PHP教程
-
PHP 源码阅读:explode 和 implode 函数