php函数解析,字符串拆分函数join/implode/split/explode
发布于 作者:苏南大叔 来源:程序如此灵动~
字符串拆分是大家写php程序的时候,经常使用到的。很久之前,苏南大叔喜欢使用split()和join()。后来,split()函数莫名其妙的被explode()函数给取代了。与时俱进之后,发现join()函数,其实也有个对应的implode()函数。这就是本文的写作初衷了。

本文测试环境:win10,php@7.3.4nts。
字符串分割
至今也想不明白,非常好用的split(),咋就变成了explode()。既然时代抛弃了split(),那么就让他飘过吧。
explode ( string $delimiter , string $string [, int $limit ] ) : array范例如下:
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *字符串合并
苏南大叔日常是使用join()函数的,后来根据官方说明,原来join()是implode()函数的别名。
implode ( string $glue , array $pieces ) : string$arr = array('Hello','World!','Beautiful','Day!');
echo join(" ",$arr); //Hello World! Beautiful Day!
$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone特别提示
这里有个非常有意思的罕见小知识,implode()的两个参数可以互换,得到的将会是同样的结果。而explode()函数,却并不能做到同样的事情,两个参数并不能互换。
$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone
echo implode($array,","); // lastname,email,phone
// Deprecated: implode(): Passing glue string after array is deprecated.
$str ="lastname,email,phone";
var_dump(explode(",",$str)); // ["lastname","email","phone"]
var_dump(explode($str,",")); // [","]
在这个例子中,可以得出下面的结论:
join()等于implode(),用于合并字符串,数组变字符串。split()等于explode(),用于分割字符串,字符串变数组。- 推荐使用的是:
implode()和explode()。 - 推荐的参数顺序是:先
$glue后$array。 - 合并字符串的时候,如果先
$array后$glue的话,会得到Deprecated警告信息。 - 分割字符串的时候,如果先
$array后$glue的话,会得到错误的答案。
相关链接
- https://newsn.net/say/php-json-function.html
- https://newsn.net/say/php-file_get_contents.html
- https://newsn.net/say/php-file_put_contents.html
总结
一些函数,平时用着用着,就没多想过。结果看看文档,还能看出来亲戚关系来。真是很有意思啊。对吧?
更多php函数分析,请参考苏南大叔的博客: