如何以UTF 8剪切字符串。
我在网上搜索了这个功能:
function cutString($str, $lenght = 100, $end = ' …', $charset = 'UTF-8', $token = '~') {
$str = strip_tags($str);
if (mb_strlen($str, $charset) >= $lenght) {
$wrap = wordwrap($str, $lenght, $token);
$str_cut = mb_substr($wrap, 0, mb_strpos($wrap, $token, 0, $charset), $charset);
return $str_cut .= $end;
} else {
return $str;
}
}
但是这个功能的结果并不太好。因为如果我们设置削减200个字母,它将返回大约110个,但我需要大约200个。
答案 0 :(得分:-1)
我刚刚测试过,它运行正常。如果你用
运行它echo cutString($mystring, 200);
它从我给它的字符串中返回201个字符。
答案 1 :(得分:-1)
我认为wordwrap()函数在这种情况下做错了 手动切割字符串。我使用这样的函数(只需将'mb_'和$ charset添加到字符串函数中):
function str_cut_end_by_word($s, $max_len, $trailer = "...")
{
if (strlen($s) <= $max_len)
return $s;
$s = trim($s);
$s = substr($s, 0, $max_len);
for ($i = strlen($s) - 1; $i >= 0; $i--)
{
if (in_array($s{$i}, array(" ", "\t", "\r", "\n")))
{
return rtrim(substr($s, 0, $i)).$trailer;
}
}
return $s;
}