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

Twitter updates

  • Stumbling upon a really nice ProcessWire-powered website, plus core updates including API improvements for ProcessWire forms— More
    9 September 2022
  • Useful new dot-and-bracket syntax options added for page.get() method— More
    2 September 2022
  • This week, in addition to the regular core updates, we have new versions of ProcessWire ProFields Table and ProFields Combo that add support for their own file and image types— More
    19 August 2022

Latest news

  • ProcessWire Weekly #437
    In the 437th issue of ProcessWire Weekly we're going to check out the latest core updates, forum highlights and online resources, and more. Read on!
    Weekly.pw / 24 September 2022
  • Multi-language field translation export/import
    In this post we cover the details of a new module that enables export and import capabilities for multi-language fields in ProcessWire.
    Blog / 5 August 2022
  • 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