PHP如何截取字符串_字符串截取操作完整指南


使用substr()和mb_substr()可实现PHP字符串截取,前者适用于单字节字符,后者支持多字节如中文;结合explode()或strpos()按分隔符提取;生成摘要时用mb_substr()安全截断并添加省略号。

在PHP开发中,字符串截取是常见的操作,尤其在处理文本内容、生成摘要或提取特定信息时非常实用。PHP提供了多种方式来实现字符串截取,每种方法适用于不同场景。下面详细介绍常用的方法和注意事项,帮助你灵活掌握字符串截取技巧。

使用 substr() 函数截取字符串

substr() 是PHP中最常用的字符串截取函数,可以根据指定的起始位置和长度提取子字符串。

基本语法:

substr(string $string, int $start, ?int $length = null)

  • $string:原始字符串
  • $start:起始位置(从0开始)。若为负数,则从字符串末尾向前计算
  • $length:截取长度。若省略,则截取到字符串末尾;若为负数,则从末尾再减去相应字符

示例:

substr("Hello World", 0, 5); // 返回 "Hello"

substr("Hello World", -5); // 返回 "World"

substr("Hello World", 6, 3); // 返回 "Wor"

处理中文等多字节字符:使用 mb_substr()

当字符串包含中文、日文等多字节字符时,substr() 可能会截断字节导致乱码。应使用 mb_substr() 函数,它是多字节安全的。

基本语法:

mb_substr(string $str, int $start, ?int $length = null, ?string $encoding = null)

  • $encoding:指定字符编码,如 'UTF-8'。建议明确设置以避免问题

示例:

mb_substr("你好世界", 0, 2, 'UTF-8'); // 返回 "你好"

mb_substr("你好世界", 1, 3, 'UTF-8'); // 返回 "好世"

如果不指定编码,PHP会使用内部编码,可能引发意外结果,所以推荐始终传入 'UTF-8'。

根据分隔符截取:explode() 与 strpos() 配合使用

有时需要按特定字符(如空格、逗号、句号)截取字符串的一部分,可以结合 explode()strpos() 实现。

  • explode() 将字符串按分隔符拆分为数组,然后取所需部分
  • strpos() 查找子串位置,配合 substr() 截取

示例:

$email = "user@example.com";

$username = explode("@", $email)[0]; // 得到 "user"

$pos = strpos($email, "@");

$domain = substr($email, $pos + 1); // 得到 "example.com"

安全截取并添加省略号(适合文章摘要)

在生成内容摘要时,常需限制字符数并在末尾加“...”。注意避免截断HTML标签或中文字符。

推荐做法:
  • 使用 mb_substr() 确保不乱码
  • 判断原字符串是否已超出长度,再决定是否加省略号

示例函数:

function getExcerpt($text, $maxLength = 100) {
  if (mb_strlen($text, 'UTF-8')     return $text;
  }
  return mb_substr($text, 0, $maxLength, 'UTF-8') . '...';
}

这样可避免对短文本误加省略号,同时保证多语言支持。

基本上就这些。掌握 substr、mb_substr 和结合分隔符的截取方法,就能应对大多数字符串处理需求。关键是根据字符类型选择合适函数,尤其是中文环境务必使用 mb_* 系列函数。


# php  # html  # php字符串  # 编码  # 字节  # ai  # php开发  # String  # NULL  # strpos  # if  # 字符串  # int  # Length  # function  # 多字  # 分隔符  # 适用于  # 你好  # 若为  # 尤其是  # 就能  # 日文  # 并在  # 所需 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例  如何在Golang中实现文件下载_Golang文件传输与内容类型处理方法  Win10电脑怎么设置网络名称_Windows10注册表NetworkList修改  Win11如何更改用户账户文件夹名称 Win11修改C:Users用户名【终极教程】  Win11怎么连接蓝牙耳机_Win11蓝牙设备配对与连接教程【步骤】  MySQL 中使用 IF 和 CASE 实现查询字段的条件转换  Win11怎么清理C盘虚拟内存_Win11清理虚拟内存设置【教程】  如何在JavaScript中动态拼接PHP的base_url与jQuery变量  Mac的“调度中心”与“空间”怎么用_Mac多桌面高效管理【技巧】  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  如何在Golang中处理JSON字段缺失_Golangjson解析字段校验方法  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  PHP主流架构怎么部署到Docker_容器化流程【操作】  Win10电脑怎么设置IP地址_Windows10网络属性固定IP配置  Win11怎样安装钉钉客户端_Win11安装钉钉教程【步骤】  PyTorch DDP 多进程训练在 Kaggle 笔记本中的正确启动方式  Win11怎么设置ipv4地址_Windows 11固定静态IP地址配置教程【详解】  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何在Golang中定义接口_抽象方法和多态实现  Win11系统占用空间大怎么办 Win11深度瘦身清理指南【优化】  php怎么操作Redis_Redis扩展连接与基本命令使用方法【方法】  短链接怎么用php递归还原_多层加密链接的处理法【详解】  如何测试您的网站全球打开速度-网站海外测速工  php订单日志怎么记录发货_php记录订单发货操作日志指南【指南】  php本地部署后数据库连接报错_1045accessdenied错误解决方法详解【汇总】  Python深度学习实战教程_神经网络模型构建与训练  Python数据挖掘进阶教程_分类回归与聚类案例解析  Python对象比较排序规则_集合使用说明【指导】  Windows 11无法安全删除U盘提示设备正在使用中怎么办_Windows 11找出占用设备进程  mac怎么打开终端_MAC终端Terminal使用入门与常用命令【教程】  Windows10电脑怎么设置电源按钮_Win10按电源键关机或休眠  c++如何用AFL++进行模糊测试 c++ Fuzzing入门【安全】  Win11怎么更改电脑名称_Windows 11修改计算机名操作指南【步骤】  手机php怎么转mp4_手机端php文件转mp4app推荐【指南】  Win11怎么设置闹钟_Windows 11时钟应用闹钟设置指南【详解】  如何在 ACF 中正确更新嵌套多层 Group 字段内的子字段  php怎么下载安装后设置错误日志_phpini log配置教程【汇总】  如何在 Go 开发中正确处理本地包导入与远程模块路径的一致性问题  mac怎么安装pip_MAC Python pip安装工具与升级方法【详解】  How to Properly Use NumPy in VS Code  php订单日志怎么记录评价_php记录订单评价日志方法【方法】  Win11怎么更改计算机名_Windows11系统信息重命名设备教程  Win11怎么关闭触摸键盘图标_Windows11任务栏系统托盘设置  作用域操作符会影响性能吗_php静态调用性能分析【教程】  Win11如何开启telnet服务 Win11启用Telnet客户端【步骤】  Python网络异常模拟_测试说明【指导】  如何优化Golang程序CPU性能_Golang CPU密集型任务优化方法  Go 语言标准库为何不提供泛型切片的 Contains 方法?  Win10电脑怎么设置休眠快捷键_Windows10电源按钮功能定义 

 2025-11-04

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.