Извратиться можно, но это будет именно извращение.
Тем более что всё равно кроме функций понадобятся и управляющие конструкции - if, foreach.
И решение давно придумано.
РНР умеет встраиваться в HTML. Поэтому вместо того, чтобы писать разрозненные куски HTML в переменные, весь HTML пишется в один php файл, в котором делаются вставки на РНР. после того, как РНР выполнил всю бизнес-логику, пишется одна строчка, include 'template.php'; и дальше выводится весь HTML. Грубый пример такого файла
<?php include 'top.php'; ?>
<h2><?=$pagetitle?></h2>
<ul>
<?php foreach($links as $row): ?>
<li>
<a href="<?= htmlspecialchars($row['link']) ?>">
<?= htmlspecialchars($row['name'])?>
</a>
</li>
<?php endforeach ?>
<ul>
<?php include 'bottom.php'; ?>
Ну и после такого колупания разработчик быстро приходит к идее использовать специпализированные шаблонные движки, такие как Twig. Но поскольку новичкам сложно осваивать столько нового за раз, лучше двигаться постепенно