我从数据库中获取 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');
...
}
}
编辑以添加示例
如果我截断 65 个字符的文本,它返回:
Un jardín de estilo neoclásico acorde con el …
如果我更改特殊字符 (í, á),则返回:
Un jardin de estilo neoclasico acorde con el Palacio de …
我确定编码或服务器或 php 有一些奇怪的地方;但我想不通!谢谢!
最终解决方案
我正在使用这个 UTF8 PHP library现在一切正常...
最佳答案
使用 mb_substr。第一个参数是要检查的字符串,第二个是起始位置,第三个是长度,最后是编码。
mb_substr ("String", 0, $len, 'utf-8');
关于php - 在 PHP 中剪切 UTF8 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3294537/