剪切字符串 (UTF-8) (PHP)

  • 本文关键字:PHP UTF-8 字符串 php
  • 更新时间 :
  • 英文 :


如何在 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 个。

我刚刚测试过它,它工作正常。如果您运行它

echo cutString($mystring, 200);

它从我给它的字符串中返回 201 个字符。

我认为 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;
}

最新更新