Сокращение строки с … на конце

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

Related of "Сокращение строки с … на конце"

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

 function str_truncate($str, $length) { if(strlen($str) <= $length) return $str; return substr($str, 0, $length - 3) . '...'; } 
 function truncateWords($input, $numwords, $padding="") { $output = strtok($input, " \n"); while(--$numwords > 0) $output .= " " . strtok(" \n"); if($output != $input) $output .= $padding; return $output; } 

Усекать по слову

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

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

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

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

Я использую комбинацию 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