$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.137

Twitter updates

  • ProcessWire 3.0.142 has a lot of updates but the biggest is the addition of custom fields support for file and image fields. In this post, we take a closer look at that, and also outline all of the new features in the just-released FormBuilder v40— More
    11 October 2019
  • This week’s dev branch version brings you improvements to ProcessWire’s input->cookie API variable, plus it adds the ability to modify system URLs and paths at runtime. This post also includes some examples to demonstrate just how useful this can be— More
    20 September 2019
  • New post: This week we’ll take a look at a new version of FormBuilder that's on the way (with a screencast), as well as the latest version of the core: ProcessWire 3.0.140— More
    6 September 2019

Latest news

  • ProcessWire Weekly #284
    In the 284th issue of ProcessWire Weekly we're going to take a quick look at the latest core updates, introduce a new module called InputfieldFloatRange, and continue our ongoing poll series #processwireworks. Read on!
    Weekly.pw / 20 October 2019
  • ProcessWire 3.0.142 core updates
    This latest version of the core on the dev branch has a lot of updates, and the biggest is the addition of custom fields support for file and image fields. In this post, we take a closer look and also outline all of the new features in the just-released FormBuilder v40.
    Blog / 11 October 2019
  • Subscribe to weekly ProcessWire news

“We were really happy to build our new portfolio website on ProcessWire! We wanted something that gave us plenty of control on the back-end, without any bloat on the front end - just a nice, easy to access API for all our content that left us free to design and build however we liked.” —Castus, web design agency in Sheffield, UK