$data = array("title" => "Добро пожаловать!")
<div>%title%</div>
<div>Добро пожаловать!</div>
$str = '<div class="title">%TITLE%</div><div class="block">%TEXT%</div>';
$data = array(
'TITLE' => 'My title',
'TEXT' => 'My text'
);
$html = templater($str, $data);
echo $html;
function templater ($str, $data) {
$keys = array();
$vals = array();
foreach ($data as $k => $v) {
array_push ($keys, "/%".$k."%/");
array_push ($vals, $v);
}
return preg_replace($keys, $vals, $str);
}
function templater ($parts, $data) {
list ($tpl, $keys, $vals) = array("", [], []);
foreach ($parts as $p) $tpl .= file_get_contents($p);
foreach ($data as $k => $v) {
array_push ($keys, "/{".$k."}/");
array_push ($vals, $v);
}
return preg_replace($keys, $vals, $tpl);
}
// а вот использование.
// первый аргумент- массив частей, которые нужно объединить.
// второй- массив идентификаторов и данных, которые нужно заменить.
echo templater ([
"header.tpl",
"content.tpl",
"footer.tpl"
], [
"title" => "Page",
"content" => "hello_world",
"phone" => "133654"
]);
<div>{content}</div>
// слушатель события
document.addEventListener("myEvent", function (event) {
console.log(event.detail); // данные, которые передали с событием
});
// ---------------------------------------------------------------------
// этот фрагмент помещаем туда, где "console.log('измененo');"
// создаем объект события
var newEvent = new CustomEvent("myEvent", {
detail: {
// передаем данные с событием, если нужно
foo: "fooo",
bar: "barr"
},
bubbles: true, // всплываемость
cancelable: false // отменяемость
});
// Генерируем событие
document.dispatchEvent(newEvent);
// после этой строчки, все слушатели услышат событие