使用substr()和mb_substr()可实现PHP字符串截取,前者适用于单字节字符,后者支持多字节如中文;结合explode()或strpos()按分隔符提取;生成摘要时用mb_substr()安全截断并添加省略号。
在PHP开发中,字符串截取是常见的操作,尤其在处理文本内容、生成摘要或提取特定信息时非常实用。PHP提供了多种方式来实现字符串截取,每种方法适用于不同场景。下面详细介绍常用的方法和注意事项,帮助你灵活掌握字符串截取技巧。
substr() 是PHP中最常用的字符串截取函数,可以根据指定的起始位置和长度提取子字符串。
基本语法:substr(string $string, int $start, ?int $length = null)
示例:
substr("Hello World", 0, 5); // 返回 "Hello"
substr("Hello World", -5); // 返回 "World"
substr("Hello World", 6, 3); // 返回 "Wor"
当字符串包含中文、
日文等多字节字符时,substr() 可能会截断字节导致乱码。应使用 mb_substr() 函数,它是多字节安全的。
mb_substr(string $str, int $start, ?int $length = null, ?string $encoding = null)
示例:
mb_substr("你好世界", 0, 2, 'UTF-8'); // 返回 "你好"
mb_substr("你好世界", 1, 3, 'UTF-8'); // 返回 "好世"
如果不指定编码,PHP会使用内部编码,可能引发意外结果,所以推荐始终传入 'UTF-8'。
有时需要按特定字符(如空格、逗号、句号)截取字符串的一部分,可以结合 explode() 或 strpos() 实现。
示例:
$email = "user@example.com";
$username = explode("@", $email)[0]; // 得到 "user"
$pos = strpos($email, "@");
$domain = substr($email, $pos + 1); // 得到 "example.com"
在生成内容摘要时,常需限制字符数并在末尾加“...”。注意避免截断HTML标签或中文字符。
推荐做法:示例函数:
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
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。