当前位置:首页 > PHP

php实现中文截取

2026-02-15 17:32:42PHP

PHP 实现中文截取的方法

在 PHP 中截取中文字符串时,需要注意中文字符是多字节字符(UTF-8 编码下通常占 3 个字节),直接使用 substr 会导致乱码或截取不完整。以下是几种常用方法:

使用 mb_substr 函数

mb_substr 是多字节安全的字符串截取函数,需确保 PHP 已启用 mbstring 扩展。

php实现中文截取

$str = "这是一段中文字符串";
$length = 5; // 截取长度
$substring = mb_substr($str, 0, $length, 'UTF-8');
echo $substring; // 输出:这是一段中

参数说明:

php实现中文截取

  • 第一个参数:原始字符串。
  • 第二个参数:起始位置(从 0 开始)。
  • 第三个参数:截取长度。
  • 第四个参数:字符编码(必须指定为 UTF-8)。

自定义函数处理(无 mbstring 扩展时)

如果服务器不支持 mbstring,可以通过正则匹配实现:

function substr_cn($str, $start, $length) {
    return preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}'.
                       '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$length.'}).*/s',
                       '$1', $str);
}

$str = "这是一段中文字符串";
echo substr_cn($str, 0, 5); // 输出:这是一段中

处理截取后添加省略号

截取后若需显示省略号,可检查原字符串长度是否超过截取长度:

$str = "这是一段很长的中文字符串";
$max_length = 5;
if (mb_strlen($str, 'UTF-8') > $max_length) {
    $str = mb_substr($str, 0, $max_length, 'UTF-8') . '...';
}
echo $str; // 输出:这是一段很...

注意事项

  1. 编码一致性:确保字符串操作全程使用 UTF-8 编码。
  2. 函数依赖:优先使用 mb_substr,需在 php.ini 中启用 mbstring 扩展。
  3. 性能考虑:正则方法效率较低,仅作为备用方案。

标签: 中文php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('lo…

elementui中文官网

elementui中文官网

Element UI 中文官网信息 Element UI 是一个基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件和设计资源。以下是相关官方资源和使用方法: 官方网站 Element UI…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('lo…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移…