当前位置:首页 > 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 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…

php实现域名

php实现域名

PHP实现域名操作的方法 获取当前域名 使用$_SERVER['HTTP_HOST']可以获取当前访问的域名: $currentDomain = $_SERVER['HTTP_HOST']; ech…

php搜索功能的实现

php搜索功能的实现

实现PHP搜索功能的方法 数据库搜索 使用SQL的LIKE语句进行模糊匹配,适用于简单的搜索需求。 $searchTerm = $_GET['search']; $query = "SELECT *…

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…

php 实现排名

php 实现排名

PHP 实现排名的方法 在 PHP 中实现排名功能通常涉及对数据进行排序、计算排名以及输出结果。以下是几种常见的实现方式: 基本数组排序排名 $scores = [85, 92, 78, 95, 8…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…