WireTextTools::populatePlaceholders() method

Given a string ($str) and values ($vars), populate placeholder “{tags}” in the string with the values

  • The $vars should be an associative array of [ 'tag' => 'value' ].
  • The $vars may also be an object, in which case values will be pulled as properties of the object.

By default, tags are specified in the format: {first_name} where first_name is the name of the variable to pull from $vars, { is the opening tag character, and } is the closing tag char.

The tag parser can also handle subfields and OR tags, if $vars is an object that supports that. For instance {products.title} is a subfield, and {first_name|title|name} is an OR tag.

Available since version 3.0.126. Use wirePopulateStringTags() function for older versions

Example

$vars = [ 'foo' => 'FOO!', 'bar' => 'BAR!' ];
$str = 'This is a test: {foo}, and this is another test: {bar}';
echo $sanitizer->getTextTools()->populatePlaceholders($str, $vars);
// outputs: This is a test: FOO!, and this is another test: BAR!

Usage

// basic usage
$string = $wireTextTools->populatePlaceholders(string $str, $vars);

// usage with all arguments
$string = $wireTextTools->populatePlaceholders(string $str, $vars, array $options = []);

Arguments

NameType(s)Description
strstring

The string to operate on (where the {tags} might be found)

varsWireData, object, array

Object or associative array to pull replacement values from.

options (optional)array

Array of optional changes to default behavior, including:

  • tagOpen (string): The required opening tag character(s), default is '{'
    • tagClose (string): The optional closing tag character(s), default is '}'
    • recursive (bool): If replacement value contains tags, populate those too? (default=false)
    • removeNullTags (bool): If a tag resolves to a NULL, remove it? If false, tag will remain. (default=true)
    • entityEncode (bool): Entity encode the values pulled from $vars? (default=false)
    • entityDecode (bool): Entity decode the values pulled from $vars? (default=false)
  • allowMarkup (bool): Allow markup to appear in populated variables? (default=true)

Return value

string

String with tags populated.


WireTextTools methods and properties

API reference based on ProcessWire core version 3.0.163

Twitter updates

  • This week we’re proud to announce the newest ProcessWire master version 3.0.164. Relative to the previous master (3.0.148) this version adds a ton of new & useful features and fixes more than 85 issues, with more than 225 commits over 7 months— More
    7 August 2020
  • ProcessWire 3.0.163 resolves more than a dozen issue reports and adds new hooks and configurable module install options, among numerous other updates. In addition, a major update to ProCache (v4.0) has been released— More
    24 July 2020
  • Weekly update for 17 July 2020 and a look at new features coming in next week's version of ProCache— More
    17 July 2020

Latest news

  • ProcessWire Weekly #325
    In the 325th issue of ProcessWire Weekly we're going to cover a new master version of ProcessWire, introduce the Textformatter Audio Embed module, and more. Read on!
    Weekly.pw / 1 August 2020
  • ProcessWire 3.0.164 new master version
    This week we’re proud to announce the newest ProcessWire master version 3.0.164. Relative to the previous master version (3.0.148) this version adds a ton of new and useful features and fixes more than 85 issues, with more than 225 commits over a period of 7 months.
    Blog / 7 August 2020
  • 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