Укорочение строки с ... на конце - PullRequest
1 голос
/ 17 декабря 2010

Есть ли официальная функция PHP для этого? Как называется это действие?

Ответы [ 4 ]

3 голосов
/ 17 декабря 2010

Нет, встроенной функции нет, но вы, конечно, можете создать свою собственную:

function str_truncate($str, $length) {
   if(strlen($str) <= $length) return $str;
   return substr($str, 0, $length - 3) . '...';
}
2 голосов
/ 17 декабря 2010
function truncateWords($input, $numwords, $padding="") {
    $output = strtok($input, " \n");
    while(--$numwords > 0) $output .= " " . strtok(" \n");
    if($output != $input) $output .= $padding;
    return $output;
}

Сократить до слова

1 голос
/ 17 декабря 2010

Я использую комбинацию wordwrap , substr и strpos , чтобы убедиться, что он не обрезает слова или перед разделителем не стоитпробел.

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
1 голос
/ 17 декабря 2010

Нет, в PHP нет встроенной функции для «усечения» строк (если только у какого-то странного расширения такой функции нет, но зрителям не гарантировано / у вас будет такой плагин - я не знаю ни одногочто делать).

Я бы порекомендовал просто написать для него простую функцию, что-то вроде:

<?php

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

?>

И если вы хотите использовать символ "точка приостановки" (одинсимвол с тремя точками; это юникод), используйте HTML-сущность &hellip;.

...