}
/**
- * Get< the regex for token replacement
+ * Get the regex for token replacement
*
* @param string $token_type
* A string indicating the the type of token to be used in the expression.
*
* @return string
- * regular expression sutiable for using in preg_replace
+ * regular expression suitable for using in preg_replace
*/
- private static function tokenRegex($token_type) {
- return '/(?<!\{|\\\\)\{' . $token_type . '\.([\w]+:?\w*(\-[\w\s]+)?)\}(?!\})/';
+ private static function tokenRegex(string $token_type) {
+ return '/(?<!\{|\\\\)\{' . $token_type . '\.([\w]+(:|\.)?\w*(\-[\w\s]+)?)\}(?!\})/';
}
/**
public static function getTokens($string) {
$matches = [];
$tokens = [];
- preg_match_all('/(?<!\{|\\\\)\{(\w+\.\w+:?\w*)\}(?!\})/',
+ preg_match_all('/(?<!\{|\\\\)\{(\w+\.\w+(:|.)?\w*)\}(?!\})/',
$string,
$matches,
PREG_PATTERN_ORDER
if ($matches[1]) {
foreach ($matches[1] as $token) {
- [$type, $name] = preg_split('/\./', $token, 2);
+ $parts = explode('.', $token, 3);
+ $type = $parts[0];
+ $name = $parts[1];
+ $suffix = !empty($parts[2]) ? ('.' . $parts[2]) : '';
if ($name && $type) {
if (!isset($tokens[$type])) {
$tokens[$type] = [];
}
- $tokens[$type][] = $name;
+ $tokens[$type][] = $name . $suffix;
}
}
}