使用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:截取长度。若省略,则截取到字符串末尾;若为负数,则从末尾再减去相应字符
示例:
立即学习“PHP免费学习笔记(深入)”;
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’。建议明确设置以避免问题
示例:
立即学习“PHP免费学习笔记(深入)”;
mb_substr("你好世界", 0, 2, 'UTF-8'); // 返回 "你好"
mb_substr("你好世界", 1, 3, 'UTF-8'); // 返回 "好世"
如果不指定编码,PHP会使用内部编码,可能引发意外结果,所以推荐始终传入 ‘UTF-8’。
根据分隔符截取:explode() 与 strpos() 配合使用
有时需要按特定字符(如空格、逗号、句号)截取字符串的一部分,可以结合 explode() 或 strpos() 实现。
explode() 将字符串按分隔符拆分为数组,然后取所需部分strpos() 查找子串位置,配合 substr() 截取
示例:
立即学习“PHP免费学习笔记(深入)”;
$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如何截取字符串_字符串截取操作完整指南的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1330762.html
微信扫一扫
支付宝扫一扫