【发布时间】:2012-01-19 00:40:34
【问题描述】:
我的 PHP 代码中有一些字符串如果太长需要截断。
例如,如果一个文本是这样的:
嗨,我想告诉你这是多么美妙。
它会用这个代替它:
你好,我想...
为此,我做了一个简单的substr。问题在于,在 UTF8 中,某些字符实际上是两个字符长。而且我遇到了一些字符在中间被剪切的问题:例如,当我尝试将修改后的字符串插入数据库时,它会崩溃。
这是我目前的功能:
static function short($string, $max = 255){
if(strlen($string) >= $max){
$string = substr($string, 0, $max - 5).'...';
} return $string;
}
有人知道如何使这个函数即使对 UTF8 字符也能工作?
【问题讨论】:
-
看看
https://api.drupal.org/api/drupal/includes!unicode.inc/function/truncate_utf8/7 -
您可能会发现
s($str)->truncate($length)和s($str)->truncateSafely($length)很有帮助,如this standalone library 中所示。两个版本都是 Unicode 安全的。后者不会断词。