PHP截取字符串函数_substr mb_substr字符串截取方法详解

幻夢星雲
发布: 2025-11-05 08:48:02
原创
365人浏览过
答案:PHP中截取字符串常用substr和mb_substr,前者适用于单字节字符如英文,后者支持多字节字符如中文。substr按字节截取,处理中文易出现乱码;mb_substr按字符截取,需指定编码,推荐用于含中文场景。选择依据是字符类型:纯英文用substr性能好,含Unicode字符务必用mb_substr并开启mbstring扩展。

php截取字符串函数_substr mb_substr字符串截取方法详解

在PHP开发中,字符串截取是常见的操作,尤其是在处理标题、摘要或用户输入时。PHP提供了多个函数来实现字符串截取,其中最常用的是 substrmb_substr。它们功能相似,但在处理多字节字符(如中文)时表现不同。

substr 函数:适用于单字节字符

substr 是PHP内置的字符串截取函数,适合处理英文、数字等单字节字符。其语法如下:

string substr ( string $string , int $start [, int $length ] )
  • $string:要截取的原始字符串
  • $start:起始位置(从0开始)。若为负数,则从字符串末尾向前计数
  • $length:可选,截取长度。若为负数,则截取到距离末尾该长度的位置

示例:

$str = "Hello World";
echo substr($str, 0, 5); // 输出:Hello
echo substr($str, -5); // 输出:World

注意:substr 在处理中文等多字节字符时会出现乱码或截断不完整的问题,因为它按字节而非字符计算。

立即学习PHP免费学习笔记(深入)”;

mb_substr 函数:支持多字节字符(推荐用于中文)

mb_substr 是PHP多字节字符串扩展函数,专门用于正确处理UTF-8、GBK等编码下的中文、日文、韩文等字符。其语法:

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人
string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
  • $str:原字符串
  • $start:起始字符位置(按字符数,不是字节)
  • $length:截取字符数量,可省略表示到结尾
  • $encoding:字符编码,如 'UTF-8'、'GBK'。建议显式指定

示例:

$str = "你好世界 Hello";
echo mb_substr($str, 0, 4, 'UTF-8'); // 输出:你好世界
echo mb_substr($str, 3, 5, 'UTF-8'); // 从第4个字符开始截5个:界 Hel

与 substr 相比,mb_substr 按实际字符截取,不会出现乱码,是处理中文内容的首选。

如何选择使用哪个函数?

关键看你的字符串是否包含非ASCII字符:

  • 如果只处理英文、数字、符号,用 substr 完全没问题,性能也更好
  • 如果涉及中文、表情符号或其他Unicode字符,必须使用 mb_substr
  • 确保服务器开启了 mbstring 扩展,否则 mb_substr 无法使用

小技巧:可通过 mb_strlen 获取多字节字符串的真实字符长度,避免混淆。

基本上就这些。日常开发中,只要涉及用户输入或含中文内容,优先考虑 mb_substr 并指定编码,能有效避免乱码问题。substr 虽然快,但不适合复杂语言环境。根据场景合理选择,才能写出更健壮的代码。

以上就是PHP截取字符串函数_substr mb_substr字符串截取方法详解的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号