直接用substr()可截取字符串前N位,起始位置设0;中文等多字节字符须用mb_substr()并指定UTF-8编码;批量处理需循环加引用;实际应用推荐用safe_substr()函数做类型与长度校验。

直接用 substr() 函数就能截取字符串前几位,核心是把起始位置设为 0,再指定要取的字符数。
基础用法:取前 N 个字符
语法很简单:substr($string, 0, $n)。其中 $n 就是你想要的位数。
-
substr("PHP is fun", 0, 3)→ 返回 "PHP" -
substr("hello world", 0, 5)→ 返回 "hello" - 如果
$n超过原字符串长度,函数自动截到末尾,不会报错
处理中文等多字节字符要用 mb_substr
PHP 的 substr 按字节操作,遇到中文、日文等会切乱码。比如 substr("你好世界", 0, 3) 可能返回乱码或问号。
- 必须启用
mbstring扩展(检查 php.ini 中extension=mbstring是否开启) - 改用:
mb_substr("你好世界", 0, 3, "UTF-8")→ 正确返回 "你好世" - 第四个参数指定编码,UTF-8 最常用
批量截取数组中每个字符串的前几位
如果有一组字符串(比如用户名列表),想统一取前 4 位,可以用循环+引用修改:
立即学习“PHP免费学习笔记(深入)”;
$names = ["张三丰", "李四光", "王五"];foreach ($names as &$name) { $name = mb_substr($name, 0, 4, "UTF-8"); }- 执行后
$names变成 ["张三丰", "李四光", "王五"](原长 ≤4,不变) - 注意加
&才能真正修改原数组元素
小技巧:安全截取,避免超长或空值出错
实际项目中建议加一层保护,尤其当字符串可能为空、null 或类型不对时:
- 先用
is_string()和!empty()判断 - 或者封装一个安全函数:
function safe_substr($str, $len, $encoding = 'UTF-8') {
if (!is_string($str) || $len return mb_strlen($str, $encoding) }
?>



















