- var_dump: documentation ( source)
- preg_match: documentation ( source)
- trim: documentation ( source)
- preg_quote: documentation ( source)
- preg_split: documentation ( source)
<?php
$utterance = 'This is a brown bear with 7 kids';
$template = 'This is a {color} bear with {kids} kids';
$newPattern = '/';
foreach(preg_split('/(\{.*?\})/', $template, -1, PREG_SPLIT_DELIM_CAPTURE) as $part) {
if(preg_match('/^(\{.*\})$/', $part)) {
$varName = trim($part, '{}');
$newPattern .= '(?P<'. preg_quote($varName) . '>.+)';
}
else {
$newPattern .= preg_quote($part);
}
}
$newPattern .= '/';
echo $newPattern;
echo "\n";
preg_match($newPattern, $utterance, $variables);
var_dump($variables);