如何用Twig实现PHP中mb_substr()的UTF-8兼容功能?
用Twig实现UTF-8安全的字符串截断(对应PHP的mb_substr)
要实现和PHP代码<?php echo mb_substr($logged_text, 0, 12, "utf-8"); ?>完全相同的功能,直接用Twig的slice过滤器即可,它本身就支持UTF-8安全截断:
- 核心写法:
{{ logged_text|slice(0, 12) }}
关键说明:
slice的参数顺序和mb_substr一致:第一个参数是起始索引(这里为0,从字符串开头开始),第二个参数是截取长度(这里为12)。- Twig默认使用UTF-8作为字符集,只要你的PHP环境启用了
mbstring扩展,slice就会像mb_substr一样正确处理多字节字符,不会出现截断半个UTF-8字符的情况。 - 如果字符串长度不足12,
slice会自动返回整个字符串,和mb_substr的行为完全一致。
可选:明确指定字符集(确保环境兼容性)
如果需要强制确保字符集为UTF-8,可以在初始化Twig环境时配置:
$twig = new Twig\Environment($loader, [ 'charset' => 'UTF-8', ]);
不过大多数情况下,Twig的默认配置已经是UTF-8,无需额外设置。
内容的提问来源于stack exchange,提问作者Martin AJ
相关产品推荐
相关产品推荐

