JS与PHP字符串截取函数原理及中文处理详解

作者:青柠

时间:2026-10-23

浏览:308

本文详细解析JavaScript中slice、substring、substr三个字符串截取函数的参数差异与负数索引行为,并对比PHP中substr与mb_substr的使用场景。重点讲解PHP处理中文多字节字符时易产生的乱码问题,以及通过开启mbstring扩展使用mb_substr解决该问题的具体方法与代码示例。

文章目录

JavaScript字符串截取函数详解

在JavaScript中,处理字符串截取主要涉及三个内置方法:slice()、substring() 和 substr()。

其中,substr(start, length) 是最常用的方式。其第一个参数 start 指定起始位置的下标,为必填项且支持负数;当传入负数时,例如 -1 代表字符串最后一个字符,-2 代表倒数第二个字符,依此类推。第二个参数 length 指定截取子串的长度,为可选参数。无论参数如何,截取方向始终是从左向右,不会因参数变化而改变顺序。

需要注意的是,截取操作生成的子串会包含起始位置对应的字符本身。

此外,字符串的所有索引均从 0 开始计数。

在计算字符串长度和索引时,空格也被视为普通字符参与处理。

substring(from, until) 和 slice(from, until) 的功能相似,都是从指定的起始索引截取到结束索引。两者的主要区别体现在处理负数参数时:当参数为负数时,它们的解释逻辑不同。需要特别强调的是,这两个方法截取出的子串不包含“until”索引值所指向的元素。

当调用 substring(0) 或 slice(0),以及直接调用 slice() 时,结果均为截取整个字符串,这在大多数场景下没有实际意义。

对于 substring 方法,其第一个参数 from 是必须提供的。

PHP字符串截取与中文处理方案

在PHP语言中,字符串截取主要通过以下函数实现:

1. substr(源字符串, 起始位置, [长度]):用于截取字符串并返回部分字符串。

<?php $str ="phpddt.com"; echo substr($str,2);//pddt.com echo substr($str,2,3);//pdd echo substr($str,-2);//om 负数从结尾开始取 ?>

然而,当使用 substr 截取包含中文字符的字符串时,极易出现乱码。这是因为在常见的编码格式(如UTF-8)中,一个汉字通常占用两个或更多字节,而一个英文字母仅占用一个字节,substr 按字节截取会破坏汉字编码结构。针对此问题,可采用以下解决方案:

2. mb_substr():其使用语法与 substr 基本相同。

使用该函数前,需确保在 php.ini 配置文件中开启了 extension=php_mbstring.dll 扩展。通常情况下,大多数虚拟主机服务商默认已启用此扩展,因此无需额外配置。

<?php echo mb_substr("php点点通",1,3,"UTF-8");//hp点 ?>

具体代码实现如下:

substr(string, start, length)

  • 其中 start 参数的具体含义如下:
  • 正数:表示在字符串的指定位置开始截取。
  • 负数:表示从字符串结尾的指定位置开始向前截取。
  • 0:表示从字符串中的第一个字符处开始截取。

以上内容涵盖了JavaScript与PHP中字符串截取函数的核心原理及中文处理的注意事项,希望对读者理解字符串操作有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章