Categories
PHP

PHP 函数 substr 用法详解

介绍

substr 函数用来对一个字符串的内容进行截取,返回字符串的一部分内容。

函数原型如下:

substr(string $string, int $start[, int $length]) : string

第一个参数为字符串 $string,必传,表示原始的字符串。
第二个参数为整型 $start,必传,表示截取起始的位置(截取包含此字符),参数为非负数时表示位置从原字符串开头向右数(第一个字符位置为 0),参数为负数时表示位置从原字符串末尾向左数(原字符末尾的位置为 -1)。
第三个参数为整型 $length,可选,表示截取字符的长度(即从截取起始的位置)。字符的截取方向从左向右。当未传此参数时,表示截取到末尾。参数为负数时表示省略末尾的此长度的字符(-1 表示省略 1 个字符)。
返回值,成功时为截取后的字符串;失败时为 false。

用法

// 指定开始位置
substr('zhangxingchao', 2);
// 返回 angxingchao
// 指定开始位置(负数)
substr('zhangxingchao', -4);
// 返回 chao
// 指定开始位置、截取长度
substr('zhangxingchao', 5, 4);
// 返回 xingchao
// 指定开始位置、截取长度(负数)
substr('zhangxingchao', 5, -2);
// 返回 xingch

经验

结果判断问题

当我们需要判断是否执行成功时,需要使用全等而不是等于。比如:

// 截取失败时
if (substr("1230", -1, 0) == false)) {
    echo "fail";
}
// 此例子中实际截取成功

中文乱码问题

在 UTF-8 编码中,一个中文至少占三个字节。substr 函数的长度单位为字节长度,截取时若按照中文字符个数传递截取长度,可能会截取半个中文字符,导致出现乱码问题。

比如:

substr("大神", 0, 1); // 乱码
substr("大神", 0, 2); // 乱码
substr("大神", 0, 3); // 字符:大

解决办法是使用 mb_substr 函数,它支持多字节字符的截取。

echo mb_substr("大神", 0, 1); // 字符:大

参考资料

扫码阅读和分享

Leave a Reply

Your email address will not be published. Required fields are marked *