上一篇
2025年8月最新动态
随着PHP 8.4的发布,字符串处理性能进一步优化,新的内置函数str_slice()
进入测试阶段,未来可能提供更简洁的截取方式,不过目前,substr()
、mb_substr()
等仍然是开发者的首选工具。
无论是处理用户输入、解析API数据,还是生成动态内容,字符串截取都是PHP开发中最常见的操作之一。
但如果不注意编码和性能,就可能遇到乱码、内存泄漏甚至安全漏洞。
substr()
$text = "Hello, 世界!"; echo substr($text, 0, 5); // 输出 "Hello"
// 截取最后3个字符 echo substr($text, -3); // 输出 "界!" // 从第7个字符开始截取 echo substr($text, 7); // 输出 "世界!"
⚠️ 坑点警告:
substr("世界", 1)
会返回错误结果) mb_substr()
处理中文、日文等UTF-8内容时,必须用这个:
$text = "PHP是最好的语言吗?"; echo mb_substr($text, 0, 5, 'UTF-8'); // 输出 "PHP是最"
substr
更安全?UTF-8
) 💡 性能提示:
如果确定只有英文数字,用substr
更快;否则无脑选mb_substr
。
$text = "The quick brown fox"; echo strtok(wordwrap($text, 10, "\n"), "\n"); // 输出 "The quick"
$html = "<p>这是一段<b>加粗</b>文本</p>"; echo mb_strimwidth(strip_tags($html), 0, 5, '...'); // 输出 "这是一段..."
$file = "image.jpg"; echo substr($file, strrpos($file, '.') + 1); // 输出 "jpg"
避免循环内重复截取:
// 坏做法 foreach ($array as $item) { $short = substr($item, 0, 10); } // 好做法 $prepared = array_map(fn($item) => substr($item, 0, 10), $array);
大文件处理用流式读取:
$handle = fopen("large.txt", "r"); fseek($handle, 1000); // 跳转到指定位置 $chunk = fread($handle, 1024);
Q:截取后如何自动添加省略号?
A:
$text = "这是一段非常长的内容..."; echo mb_strimwidth($text, 0, 10, '...', 'UTF-8');
Q:为什么substr('中文',1)
返回乱码?
A:因为一个中文字符占3个字节,必须用mb_substr
指定UTF-8编码。
Q:如何截取两个符号之间的内容?
A:
$str = "Name: [John] Age: [30]"; preg_match('/\[(.*?)\]/', $str, $match); echo $match[1]; // 输出 "John"
本文由 运紫丝 于2025-08-01发表在【云服务器提供商】,文中图片由(运紫丝)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/508356.html
发表评论