поэтому я пытаюсь сделать html-почту sytem и мой html, я хочу быть шаблоном, хранящимся в отдельном файле, например:
<div clas="headr"></div> <div class="content"></div> <div class="footer"></div>
когда я хочу отправить почту, я хочу, чтобы содержимое моей почты (из входной формы) включалось в этот div.content, а затем отправлял весь html (шаблон + отправленный текст). Каков наилучший способ сделать это? я думаю, что-то вроде:
но я не знаю, как «найти» этот div и написать представленный текст в него.
Как говорил Пекка, вы можете просто использовать str_replace
для вставки данных в свой шаблон. Просто добавьте местозаполнитель:
<div clas="header"></div> <div class="content">{{content}}</div> <div class="footer"></div>
Затем замените местозаполнитель своим контентом:
$content = 'Whatever you want to insert...'; $tpl = file_get_contents('yourtemplate.html'); $tpl = str_replace('{{content}}', $content, $tpl); mail($tpl, ...);
Вы можете поместить PHP-скрипт внутри шаблона, а затем PHP сделать рендеринг, например:
template.html:
<div clas="headr"></div> <div class="content"><?php echo $body; ?></div> <div class="footer"></div>
Затем, чтобы загрузить его, в вашем PHP-коде:
$body = "Put this into the content tag..."; ob_start(); include("template.html"); $email = ob_get_clean();
в$body = "Put this into the content tag..."; ob_start(); include("template.html"); $email = ob_get_clean();
Редактирование : в этом случае, возможно, слишком сложно использовать мой метод вместо простой замены, но если вместо замены всего сообщения электронной почты вам нужно иметь более сложный шаблон, это упростит его. Например:
<table> <tr> <td>Name:</td> <td><?php echo $name; ?></td> </tr> <tr> <td>Email:</td> <td><?php echo $email; ?></td> </tr> </table>
Он очень гибкий и не позволяет иметь слишком много переменных для замены и, что более важно, сохраняет html из вашего кода.
Используйте str_replace () для вставки содержимого в ваш шаблон.
Используйте класс, подобный PHPMailer, чтобы легко отправлять HTML-E-Mail.
Пожалуйста, ознакомьтесь с широким ответом на Programmers.StackExchange, который включает в себя различные подходы к шаблонам PHP email templating .
Простыми решениями PHP могут быть:
%placeholder%
:
str_replace
, preg_replace
(отлично работает с заменой array
) Если вы хотите избежать использования заполнителей или кода PHP внутри вашего шаблона, вы можете взглянуть на phpQuery , который является портом PHP jQuery.
В вашем примере вы бы похожи на это (см. Документы ):
<?php $body = 'The body of your email message'; $template = file_get_contents('template.html'); $email = pq('div.content').html($body); ?>
Может показаться чересчур избыточным, но если вы намереваетесь добавить больше тех же функций на основе селектора CSS, og просто хотите, чтобы ваши грязные руки дизайнеров от PHP, это могло бы быть хорошим решением.