$html = '<html>
<body>
[LINK]
[IMAGE]
</body>
</html>';
$search = array('[LINK]', '[IMAGE]');
$replace = array(
(!empty($post['link'])) ? "<p><a href=\"{$post['link']}\">{$post['link']}</a></p>" : '',
(!empty($post['image'])) ? "<p><img src=\"{$post['image']}\" alt=\"something\" /></p>" : ''
);
$html = str_replace($search, $replace, $html);
Теперь [LINK]
и [IMAGE]
заменяются целым тегом, если они присутствуют, и пустой строкой, если нет.
В зависимости от того, как вы генерируете массив $post
, вам может потребоваться использовать какое-то условие, отличное от empty()
, чтобы определить, присутствуют ли они, но вы понимаете, как это сделать.
EDIT
Поскольку это файлы шаблонов электронной почты, я бы предложил использовать шаблонную функциональность PHP и поместить некоторый PHP-код в шаблоны.
Файл шаблона
<html>
<body>
<?php if (!empty($post['link'])) { ?>
<p><a href="<?php echo $post['link']; ?>"><?php echo $post['link']; ?></a></p>
<?php } if (!empty($post['image'])) { ?>
<p><img src="<?php echo $post['image']; ?>" alt="something" /></p>
<?php } if (!empty($post['another_tag'])) { ?>
<p>Language specific string: <?php echo $post['another_tag']; ?></p>
<?php } ?>
</body>
</html>
PHP скрипт
ob_start();
include('template.html');
$html = ob_get_clean();