PHP中文处理:中文字符串截取与长度计算

Evan
Evan
发布时间:2026-10-15| 6人浏览过
原创

在 PHP Web 开发中处理非 ASCII 字符(如中文)时,原生的 substr 和 strlen 函数常因多字节编码问题导致乱码或统计错误。本文解析如何使用 mb_substr 安全截取中文片段,并利用 mb_strlen 准确计算实际字符数量。

一、中文安全截取:mb_substr

PHP 的 mb_substr 函数专门用于按字符位置截取字符串,能正确处理多字节编码,避免因半个汉字导致的乱码。mb_substr( $str, $start, $length, $encoding )
  • $str:需要进行处理的源字符串。
  • $start:截取的起始位置,索引从 0 开始。
  • $length:需要截取的字符数量(非字节数)。
  • $encoding:编码格式,常用的有 utf-8、GB2312 或 GBK。
操作示例:
<?php
// 假设源字符串混合了中文和英文URL
$str = '本站:https://www.jb51.net';

// 截取前4个字符(即"本站:"后面的部分,注意这里是按字符算)
// 若仅需截取"本站",参数应调整为 start=0, length=2
$result = mb_substr($str, 0, 4, 'utf-8');
echo $result;
?>

运行上述代码并假定文件环境为 UTF-8,控制台将输出:本站(注:示例代码中截取头4位即为“本站”,若需含冒号则为“本站:”)。

二、获取准确的中文长度:mb_strlen

对于包含多字节字符的字符串,使用原生 strlen 可能会返回字节总数而非字符数。mb_strlen 能够根据指定的编码规则统计实际的字符个数。

参数定义

mb_strlen( $str, $encoding )
  • $str:待统计长度的字符串。
  • $encoding:字符集编码,通常为 utf-8。
操作示例:
<?php
$str = '本站:https://www.jb51.net';

// 计算字符串的实际字符数
$length = mb_strlen($str, 'utf-8');
echo $length;
?>

在 UTF-8 环境下,上述代码的输出结果为 24。这说明该函数成功忽略了英文和标点占用的多个字节,将其统一视为一个字符进行了计数。

三、总结与注意事项

在使用 mb_* 系列函数前,请确保 PHP 已开启 mbstring 扩展。同时,务必保证传入的 $encoding 参数与您的网页源码声明的编码(如 meta 标签中的 charset)保持一致,否则可能产生意外的截断错误或乱码显示。 以上就是PHP中使用mb_substr和mb_strlen处理中文字符串的详细内容,更多关于PHP字符串操作技巧的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。