function Token::scan
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Utility/Token.php \Drupal\Core\Utility\Token::scan()
- 10 core/lib/Drupal/Core/Utility/Token.php \Drupal\Core\Utility\Token::scan()
- 11.x core/lib/Drupal/Core/Utility/Token.php \Drupal\Core\Utility\Token::scan()
Builds a list of all token-like patterns that appear in the text.
Parameters
string $text: The text to be scanned for possible tokens.
Return value
array An associative array of discovered tokens, grouped by type.
1 call to Token::scan()
- Token::doReplace in core/
lib/ Drupal/ Core/ Utility/ Token.php - Replaces all tokens in a given string with appropriate values.
File
-
core/
lib/ Drupal/ Core/ Utility/ Token.php, line 291
Class
- Token
- Drupal placeholder/token replacement system.
Namespace
Drupal\Core\UtilityCode
public function scan($text) {
// Matches tokens with the following pattern: [$type:$name]
// $type and $name may not contain [ ] characters.
// $type may not contain : or whitespace characters, but $name may.
preg_match_all('/
\\[ # [ - pattern start
([^\\s\\[\\]:]+) # match $type not containing whitespace : [ or ]
: # : - separator
([^\\[\\]]+) # match $name not containing [ or ]
\\] # ] - pattern end
/x', $text, $matches);
$types = $matches[1];
$tokens = $matches[2];
// Iterate through the matches, building an associative array containing
// $tokens grouped by $types, pointing to the version of the token found in
// the source text. For example, $results['node']['title'] = '[node:title]';
$results = [];
for ($i = 0; $i < count($tokens); $i++) {
$results[$types[$i]][$tokens[$i]] = $matches[0][$i];
}
return $results;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.