WireTextTools::findReplaceEscapeChars() method

Find escaped characters in $str, replace them with a placeholder, and return the placeholders


Available since version 3.0.162.


// 1. Escape certain chars in a string that you want to survive some processing:
$str = 'Hello \*world\* foo \"bar\" baz';

// 2. Use this method to find escape chars and replace them temporarily:
$a = $sanitizer->getTextTools()->findReplaceEscapeChars($str, [ '*', '"' ]);

// 3. Process string with anything that you want NOT to see chars that were escaped:
$str = some_function_that_processes_the_string($str);

// 4. Do this to restore the escaped chars (restored without backslashes by default):
$str = str_replace(array_keys($a), array_values($a), $str); 


// basic usage
$array = $wireTextTools->findReplaceEscapeChars($str, array $escapeChars);

// usage with all arguments
$array = $wireTextTools->findReplaceEscapeChars($str, array $escapeChars, array $options = []);



Array of chars you want to escape i.e. [ '*', '[', ']', '(', ')', '`', '_', '\', '"' ]

options (optional)array

Options to modify behavior:

  • escapePrefix (string): Character used to escape another character (default is backslash).
  • restoreEscape (bool): Should returned array also include the escape prefix, so escapes are restored? (default=false)
  • gluePrefix (string): Prefix for placeholders we substitute for escaped characters (default='{ESC')
  • glueSuffix (string): Suffix for placeholders we substitute for escaped characters (default='}')
  • unescapeUnknown (bool): If we come across escaped char not in your $escapeChars list, unescape it? (default=false)
  • removeUnknown (bool): If we come across escaped char not in your $escapeChars list, remove the escape and char? (default=false)

Return value


Returns assoc array where keys are placeholders substituted in $str and values are escaped characters.

WireTextTools methods and properties

API reference based on ProcessWire core version 3.0.161

Twitter updates

  • 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
  • ProcessWire 3.0.162 continues improvements to selector operators, fixes various minor issues, adds new API convenience methods, improves documentation, optimizes and refactors various portions of code and DB queries, and more— More
    10 July 2020

Latest news

  • ProcessWire Weekly #324
    In the 324th issue of ProcessWire Weekly we'll cover ProcessWire 3.0.163, ProCache v4, two brand new third party modules, and more. Read on!
    Weekly.pw / 25 July 2020
  • Powerful new text-searching abilities in 3.0.160
    In ProcessWire 3.0.160 we’ve got some major upgrades and additions to our text-search abilities. This brings a whole new level of power to $pages->find() and similar API calls, especially when it comes to search engine type queries.
    Blog / 19 June 2020
  • Subscribe to weekly ProcessWire news

“The end client and designer love the ease at which they can update the website. Training beyond how to log in wasn’t even necessary since ProcessWire’s default interface is straightforward.” —Jonathan Lahijani