最后用......缩短字符串

时间:2010-12-17 20:29:15

标签: php string truncate

是否有正式的PHP函数来执行此操作?这个动作叫什么?

4 个答案:

答案 0 :(得分:3)

不,没有内置功能,但你当然可以建立自己的功能:

function str_truncate($str, $length) {
   if(strlen($str) <= $length) return $str;
   return substr($str, 0, $length - 3) . '...';
}

答案 1 :(得分:2)

function truncateWords($input, $numwords, $padding="") {
    $output = strtok($input, " \n");
    while(--$numwords > 0) $output .= " " . strtok(" \n");
    if($output != $input) $output .= $padding;
    return $output;
}

按字词截断

答案 2 :(得分:1)

不,PHP没有内置“截断”字符串的功能(除非有一些奇怪的扩展名有一个,但是不能保证观众/你会有那种插件 - 我不知道任何一个这样做。

我建议只为它编写一个简单的函数,例如:

<?php

function truncate($str, $len)
{
  if(strlen($str) <= $len) return $str;
  $str = substr($str, 0, $len) . "...";
  return $str;
}

?>

如果您想使用“暂停点”字符(带有三个点的单个字符;它是unicode),请使用HTML实体&hellip;

答案 3 :(得分:1)

我使用wordwrapsubstrstrpos的组合来确保它不会切断单词,或者分隔符前面没有空格。

function truncate($str, $length, $delimiter = '...') {
   $ww = wordwrap($str, $length, "\n");
   return substr($ww, 0, strpos($ww, "\n")).$delimiter;
}

$str = 'The quick brown fox jumped over the lazy dog.';
echo truncate($str, 25); 
// outputs 'The quick brown fox...' 
// as opposed to 'The quick brown fox jumpe...' when using substr() only