获取字符串的前n个字符

我如何在PHP中获取字符串的前n个字符? 将字符串修剪为特定数量的字符的最快方法是什么,并在需要时追加'...'?


//The simple version for 10 Characters from the beginning of the string
$string = substr($string,0,10).'...';

更新:

基于检查长度的建议(以及确保修剪和未修剪的弦的类似长度):

$string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;

所以你会得到一串最多13个字符; 13个(或更少)普通字符或10个字符,后跟'...'

更新2:

或者作为功能:

function truncate($string, $length, $dots = "...") {
    return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
}

更新3:

我写了这个答案已经有一段时间了,我实际上不再使用这些代码。 我更喜欢这个函数,它可以防止使用wordwrap函数在字中间打破字符串:

function truncate($string,$length=100,$append="…") {
  $string = trim($string);

  if(strlen($string) > $length) {
    $string = wordwrap($string, $length);
    $string = explode("n", $string, 2);
    $string = $string[0] . $append;
  }

  return $string;
}

自4.0.6版本以来,该功能已内置到PHP中。 看文档。

echo mb_strimwidth('Hello World', 0, 10, '...');

// outputs Hello W...

请注意, trimmarker (上面的省略号)包含在截断长度中。


如果您需要控制字符串字符集,多字节扩展可以派上用场。

$charset = 'UTF-8';
$length = 10;
$string = 'Hai to yoo! I like yoo soo!';
if(mb_strlen($string, $charset) > $length) {
  $string = mb_substr($string, 0, $length - 3, $charset) . '...';
}
链接地址: http://www.djcxy.com/p/58193.html

上一篇: Get first n characters of a string

下一篇: how to get the last char of a string in PHP?