$sanitizer->truncate() method

Truncate string to given maximum length without breaking words

This method can truncate between words, sentences, punctuation or blocks (like paragraphs). See the type option for details on how it should truncate. By default it truncates between words. Description of types:

  • word: truncate to closest word.
  • punctuation: truncate to closest punctuation within sentence.
  • sentence: truncate to closest sentence.
  • block: truncate to closest block of text (like a paragraph or headline).

Note that if your specified type is something other than “word”, and it cannot be matched within the maxLength, then it will attempt a different type. For instance, if you specify “sentence” as the type, and it cannot match a sentence, it will try to match to “punctuation” instead. If it cannot match that, then it will attempt “word”.

HTML will be stripped from returned string. If you want to keep some tags use the keepTags or keepFormatTags options to specify what tags are allowed to remain. The keepFormatTags option that, when true, will make it retain all HTML inline text formatting tags.

Available since version 3.0.101.

Example

// Truncate string to closest word within 150 characters
$s = $sanitizer->truncate($str, 150);

// Truncate string to closest sentence within 300 characters
$s = $sanitizer->truncate($str, 300, 'sentence');

// Truncate with options
$s = $sanitizer->truncate($str, [
  'type' => 'punctuation',
  'maxLength' => 300,
  'visible' => true,
  'more' => '…'
]);

Usage

// basic usage
$string = $sanitizer->truncate(string $str);

// usage with all arguments
$string = $sanitizer->truncate(string $str, $maxLength = 300, $options = []);

Arguments

NameType(s)Description
strstring

String to truncate

maxLength (optional)int, array

Maximum length of returned string, or specify $options array here.

options (optional)array, string

Options array, or specify type option (string).

  • type (string): Preferred truncation type of word, punctuation, sentence, or block. (default='word') This is a “preferred type”, not an absolute one, because it will adjust to match what it can within your maxLength.
  • maxLength (int): Max characters for truncation, used only if $options array substituted for $maxLength argument.
  • maximize (bool): Include as much as possible within specified type and max-length? (default=true) If you specify false for the maximize option, it will truncate to first word, puncutation, sentence or block.
  • visible (bool): When true, invisible text (markup, entities, etc.) does not count towards string length. (default=false)
  • trim (string): Characters to trim from returned string. (default=',;/ ')
  • noTrim (string): Never trim these from end of returned string. (default=')]>}”»')
  • more (string): Append this to truncated strings that do not end with sentence punctuation. (default='…')
  • keepTags (array): HTML tags that should be kept in returned string. (default=[])
  • keepFormatTags (bool): Keep HTML text-formatting tags? Simpler alternative to keepTags option. (default=false)
  • collapseLinesWith (string): String to collapse lines with where the first is not punctuated. (default=' … ')
  • convertEntities (bool): Convert HTML entities to non-entity characters? (default=false)
  • noEndSentence (string): Strings that sentence may not end with, space-separated values (default='Mr. Mrs. …')

Return value

string


$sanitizer methods and properties

API reference based on ProcessWire core version 3.0.163

Twitter updates

  • This week ProcessWire version 3.0.166 is released on the dev branch. In this post we’ll cover all that’s new relative to the previous version, 3.0.165. Plus we’ll check out the latest new versions of ProCache and FormBuilder— More
    11 September 2020
  • Weekly update – 28 August 2020 – New secure files option defined per-template: More
    28 August 2020
  • ProcessWire 3.0.165 core updates (master and dev branch) and reCAPTCHA for FormBuilder module— More
    21 August 2020

Latest news

  • ProcessWire Weekly #331
    In the 331st issue of ProcessWire Weekly we're going to check out the latest core and Pro module updates (ProcessWire 3.0.166, ProCache 4.0.1, and Form Builder v44), introduce the Wireframe API module, and more. Read on!
    Weekly.pw / 12 September 2020
  • ProcessWire 3.0.166 core updates and more
    This week ProcessWire version 3.0.166 is released on the dev branch. In this post we’ll cover all that’s new relative to the previous version, 3.0.165. Plus we’ll check out the latest new versions of ProCache and FormBuilder.
    Blog / 11 September 2020
  • Subscribe to weekly ProcessWire news

“We chose ProcessWire because of its excellent architecture, modular extensibility and the internal API. The CMS offers the necessary flexibility and performance for such a complex website like superbude.de. ProcessWire offers options that are only available for larger systems, such as Drupal, and allows a much slimmer development process.” —xport communication GmbH