- preg_replace_callback: documentation ( source)
- strtolower: documentation ( source)
<?php
function replaceValues(array $kvPairs, string $text): string
{
return preg_replace_callback(
'/{{\s*(.*?)\s*}}/',
fn($m) => isset($kvPairs[strtolower($m[1])])
? '<span class="attr">' . $kvPairs[strtolower($m[1])] . '</span>'
: '<span class="attrUnknown">' . $m[1] . '</span>',
$text
);
}
$translations = [
'date' => '1977-05-20',
'time' => '01:02:03',
'bar' => 'Fighters',
];
echo replaceValues($translations, "Your tickets to the Foo {{ Bar}} were purchased @ {{dAte }} {{ tiME }}");