php字符串操作首选mb_substr()截取中文、str_replace()替换,注意utf-8编码、空值校验及性能优化。

PHP 中字符串截取和替换是高频操作,核心靠内置函数实现,无需额外扩展。关键在于选对函数、注意编码(尤其是中文)、处理边界情况。
字符串截取:用 mb_substr() 处理中文更安全
普通 substr() 按字节截取,对 UTF-8 中文会乱码;推荐统一使用 mb_substr(),它按字符而非字节计算:
-
// 截取前5个字符(含中文)
$str = "Hello世界PHP";
$result = mb_substr($str, 0, 5, 'UTF-8'); // "Hello世界" -
// 从第3个字符开始截取到末尾
$result = mb_substr($str, 2, null, 'UTF-8'); // "llo世界PHP" - // 注意:第三个参数为 null 表示截取到结尾,不是省略
字符串替换:str_replace() 最常用,mb_ 替换需手动实现
str_replace() 不区分编码,对中文也适用(因 UTF-8 下汉字是连续字节序列,整体匹配无问题):
-
// 批量替换多个关键词
$text = "苹果和香蕉都很甜";
$result = str_replace(['苹果', '香蕉'], ['橘子', '葡萄'], $text); // "橘子和葡萄都很甜" -
// 替换全部出现的子串
$result = str_replace('a', 'x', 'banana'); // "bxxnxx" - // 如需大小写不敏感,用 str_ireplace()
进阶需求:正则替换与安全截断
复杂模式用 preg_replace();带省略号的截断建议封装函数避免重复逻辑:
-
// 正则替换邮箱为 [hidden]
$text = "联系我:user@example.com";
$result = preg_replace('/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/', '[hidden]', $text); -
// 安全截断(保留完整词 + 省略号)
function truncate($str, $len, $suffix = '…') {
return mb_strlen($str, 'UTF-8') > $len
? mb_substr($str, 0, $len, 'UTF-8') . $suffix
: $str;
}
注意事项:编码一致、空值判断、性能提醒
实际开发中容易踩坑的地方:
- 确保 PHP 文件保存为 UTF-8 无 BOM,且 mbstring 扩展已启用(phpinfo() 查看)
- 对用户输入做非空检查:if (is_string($str) && $str !== '') { ... }
- 大量字符串操作时,str_replace() 比正则快得多,优先用它解决简单替换
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











