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.148

Twitter updates

  • New post: ProcessWire core updates (January 31, 2020)— More
    31 January 2020
  • Weekly update for Jan 10, 2020—front-end file uploads in LoginRegisterPro with InputfieldFrontendFile module: More
    10 January 2020
  • If you haven't seen it yet, be sure to check out this great infographic by @teppokoivula in ProcessWire Weekly #294— How ProcessWire professionals work—the results of our recent weekly polls summarised: weekly.pw/issue/294/#how…
    3 January 2020

Latest news

  • ProcessWire Weekly #299
    In the 299th issue of ProcessWire Weekly we're going to walk you through the latest updates to the core, introduce two brand new third party modules, and more. Read on!
    Weekly.pw / 1 February 2020
  • ProcessWire 3.0.148 new master
    Today we have a new master version released, version 3.0.148! The last master version was 3.0.123, so there are 25 new versions worth of upgrades, fixes and optimizations in this new master version, relative to the previous. In this post we’ll take a closer look at what’s new, how to upgrade, and more.
    Blog / 3 January 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