html — PHP, Как декодировать & lt; br / & gt до разрыва строки без использования сохранения в виде файлов XML

В настоящее время я пишу почтовый шаблон для своего сайта и отправляю его с помощью php и pear mime_mail.
HTML-шаблон является статическим, и я изменяю mailbody и заголовок почты динамически в php.
Вот как это делается:

$dom = new DOMDocument();
if(!$dom)
{}
$dom->loadHTMLFile("MailTemplate.html");
$itemtitle = $dom->getElementById("MailTitle");
$itembody = $dom->getElementById("MailBody");

$from = isset($_POST['from']) ? $_POST['from'] : '';
$to = isset($_POST['to']) ? $_POST['to'] : '';
$subject = isset($_POST['subject']) ? $_POST['subject'] : '';
$messagetemp = isset($_POST['message']) ? $_POST['message'] : '';


ChromePhp::log($messagetemp);
$message = nl2br($messagetemp);
ChromePhp::log($message);

$newitemtitle = $dom->createElement('span');
$newitemtitle->setAttribute('id', 'newtitleid');
$newitemtitle->nodeValue = $subject;

$newitembody = $dom->createElement('span');
$newitembody->setAttribute('id', 'newbodyid');
$newitembody->nodeValue = $message;

$parentttile = $itemtitle->parentNode;
$parentttile->replaceChild($newitemtitle,$itemtitle);
$parentbody = $itembody->parentNode;
$parentbody->replaceChild($newitembody,$itembody);

$dom->saveHTMLFile("TempMailTemplate.html");

$boundary = "-----=".md5(rand());
$passage_ligne = "\r\n";
$headers = array('From' => $from, 'Subject' => $subject );

$mime = new Mail_mime($passage_ligne);
$html = file_get_contents("TempMailTemplate.html");

$text = $message;

$mime->setTXTBody($text);
$mime->setHTMLBody($html);

$body = $mime->get();
$hdrs = $mime->headers($headers);

$mail =& Mail::factory('mail');
$result = $mail->send($to, $hdrs, $body);
ChromePhp::log($result);

Я могу изменить содержание письма и заголовок письма, но не могу получить разрывы строк в моей почте.

В ChromePhp :: log я вижу HTML-переменную перед изменением и заменой nodeValue моей DOM.
Первый ChromePhp :: log дает

hi
hi

Второй ChromePhp: журнал дает (после nl2br)

hi<br />
hi

Затем во втором шаблоне почты я получаю следующие символы разрыва строки: привет<бр />Привет

Есть ли способ заставить nodeValue или ReplaceChild принимать html-переменные?
Или есть какой-либо способ запретить использование SaveXml, поскольку я хочу сохранить свой файл в HTML?

РЕДАКТИРОВАТЬ

As explained here: https://stackoverflow.com/questions/24876935/domdocument-using-nodevalue-to-change-html-content-produces-wrongly-formatted-h I could use this piece of code :

$data = '<div class="dummydata"></div>';
$doc = new DOMDocument();
$doc->loadHTML('<!DOCTYPE html><div id="container">contents</div>');

$el = $doc->getElementById('container');

$children = $el->childNodes;
while ($children->length)
$el->removeChild($children->item(0));

$frag = $el->ownerDocument->createDocumentFragment();
$frag->appendXML($data);
$el->appendChild($frag);

echo $doc->saveHTML();

Но я новичок, чтобы добавить свои данные в определенное место, определенное id: MailBody. Я ищу команду appendXML для конкретного контейнера div

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]