fes*_*sja 5 php unicode truncate substring utf-8
我从数据库中获取UTF8文本,我想只显示前面的$ len个字符(单词结尾).我已经尝试了几个选项,但由于特殊字符(á,é,í,ó等),该功能仍无效.
谢谢您的帮助!
function text_limit($text, $len, $end='...')
{
mb_internal_encoding('UTF-8');
if( (mb_strlen($text, 'UTF-8') > $len) ) {
$text = mb_substr($text, 0, $len, 'UTF-8');
$text = mb_substr($text, 0, mb_strrpos($text," ", 'UTF-8'), 'UTF-8');
...
}
}
Run Code Online (Sandbox Code Playgroud)
编辑以添加示例
如果我截断65个字符的文本,它将返回:
Unjardíndeestiloneoclásicococorcon el ...
如果我更改特殊字符(í,á),则返回:
Un jardin de estilo neoclasico acorde con el Palacio de ...
我确定编码或服务器或php有些奇怪; 但我无法理解!谢谢!
最终解决方案
我正在使用这个UTF8 PHP库,现在一切正常......
使用mb_substr.首先arg要检查的字符串第二个是起始位置,第三个是lenght,last是编码.
mb_substr ("String", 0, $len, 'utf-8');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7158 次 |
| 最近记录: |