Самый простой способ конвертировать страницу PHP в статическую страницу HTML - PullRequest
6 голосов
/ 30 мая 2009

Я хочу преобразовать веб-страницы, которые в значительной степени стилизованы под CSS, написаны на PHP в статический html, чтобы я мог вставить их в электронное письмо.

Мне удалось это сделать, но для достижения этой цели мне пришлось преобразовать всю страницу в строку, а затем назначить эту строку в качестве тела письма. Макет страницы выглядит не так хорошо, как оригинал, так как я не смог встроить CSS.

У этого подхода есть несколько проблем, например, если необходимо внести какие-либо изменения в макет страницы, я должен повторить весь процесс создания встраиваемой страницы.

Мне нужен более простой способ, который позволит мне визуально сохранять исходную страницу в Dreamweaver.

Ответы [ 4 ]

12 голосов
/ 30 мая 2009

Вы можете использовать выходные буферы. Если у вас есть HTML-страница, например:

   <html>
      <head>
         <title>Blah</title>
      </head>
      <body>
        Some text here
      </body>
   </html>

Тогда, если вы положите, вверху HTML-файла:

<?php ob_start(); ?>

А справа внизу, после последнего тега, поставить:

<?php 
   $string = ob_get_contents(); 

   //do whatever you need to do to the html, save it to a seperate file, email it, etc

   ob_flush();
?>

В сущности это означает, что переменная $ string в итоге будет содержать весь статический html страницы после ее динамического генерирования. Затем вы можете использовать эту строку в электронном письме. Хотя на самом деле HTML-страницы не работают точно так же в электронных письмах, поэтому вы можете переосмыслить подход.

1 голос
/ 27 мая 2015

просто сделайте это на странице php

Поместите это сверху, где вы хотите начать захват вывода:

ob_start ();

положи это на дно php

$ HtmlCode = ob_get_contents (); ob_end_flush ();

$ Fh = Еореп ( 'index.html', 'W'); FWRITE ($ ФХ, $ HtmlCode);

fclose ($ ФХ);

затем перенаправить на html-страницу

1 голос
/ 30 мая 2009

Это трудно сделать автоматически по нескольким причинам:

  1. Если ваша мысль о поддержке HTML в браузерах была плохой, программы электронной почты на порядок хуже. По сути, вы должны писать HTML, как это было в 1999 году, поэтому HTML 3.2 / 4.0, без CSS;
  2. Вы можете включить изображения в качестве внешних ссылок или встроить их непосредственно в электронное письмо. Внешние ссылки занимают меньше места, но многие почтовые программы блокируют их, так как они используются спамерами для маркировки реальных адресов (делая каждый URL-адрес изображения, который они отправляют, уникальным, и таким образом они могут выяснить, какая электронная почта была открыта). Встроенные изображения используют немного другой формат ссылки;
  3. Поддержка CSS в основном должна рассматриваться как несуществующая. Все CSS должны быть внутренними;
  4. При отправке электронной почты в формате HTML рекомендуется также отправлять текстовую версию для клиентов, у которых либо отсутствует поддержка HTML, либо пользователь отключил ее (да, это действительно происходит). И нет хорошего способа превратить сложную HTML-страницу в простой текстовый эквивалент. Это в основном должно быть сделано вручную; и
  5. Содержимое электронной почты отличается от содержимого веб-страницы. Веб-страницы обычно имеют поля поиска, меню, боковые панели, верхние и нижние колонтитулы и так далее. Это все, что вам не интересно по электронной почте. Вы заинтересованы только в содержании страницы. Таким образом, блоги работают достаточно хорошо для этого, потому что содержание сообщения в блоге может быть легко извлечено. С произвольными страницами сложнее.

Таким образом, есть несколько способов сделать это, например, использовать cURL для получения веб-страницы, использовать буферизацию вывода для захвата страницы с помощью require / include и т. Д., Но все эти методы страдают от одной или нескольких из вышеуказанных проблем. Обычно я обнаружил, что единственный способ сделать электронную почту в формате HTML - это свернуть ее вручную.

0 голосов
/ 27 мая 2015

просто сделайте это на странице php

Поместите это сверху, где вы хотите начать захват вывода:

положи это на дно php

$ HtmlCode = ob_get_contents (); ob_end_flush ();

$ Fh = Еореп ( 'index.html', 'ж'); FWRITE ($ ФХ, $ HtmlCode);

fclose ($ ФХ);

?> затем перенаправить на HTML-страницу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...