Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP页面转换为静态HTML页面的最简单方法_Php_Html_Email_Xhtml_Static - Fatal编程技术网

将PHP页面转换为静态HTML页面的最简单方法

将PHP页面转换为静态HTML页面的最简单方法,php,html,email,xhtml,static,Php,Html,Email,Xhtml,Static,我想转换一个网页,这是严重的CSS样式是用PHP编写的静态html,以便我可以嵌入到电子邮件中 我已经设法做到了这一点,但为了实现这一点,我必须将整个页面转换为字符串,然后将该字符串指定为电子邮件正文。页面的布局看起来不像原来的那么好,因为我没有嵌入CSS 这种方法有一些问题,比如如果必须对页面的布局进行任何更改,我必须重新执行生成可嵌入页面的整个过程 我想要一种更简单的方法,使我能够在Dreamweaver中直观地保持原始页面的可编辑性。这是一件很难自动完成的事情,原因如下: 如果你认为浏览器

我想转换一个网页,这是严重的CSS样式是用PHP编写的静态html,以便我可以嵌入到电子邮件中

我已经设法做到了这一点,但为了实现这一点,我必须将整个页面转换为字符串,然后将该字符串指定为电子邮件正文。页面的布局看起来不像原来的那么好,因为我没有嵌入CSS

这种方法有一些问题,比如如果必须对页面的布局进行任何更改,我必须重新执行生成可嵌入页面的整个过程


我想要一种更简单的方法,使我能够在Dreamweaver中直观地保持原始页面的可编辑性。

这是一件很难自动完成的事情,原因如下:

  • 如果你认为浏览器对HTML的支持不好,那么电子邮件程序就差了一个数量级。基本上你应该像1999年那样编写HTML,所以HTML3.2/4.0,没有CSS
  • 您可以选择将图像作为外部链接包含或直接嵌入电子邮件中。外部链接占用的空间较少,但许多邮件发送者会阻止它们,因为垃圾邮件发送者使用它们标记实时地址(通过使发送的每个图像URL都是唯一的,这样他们就可以知道打开了哪封电子邮件)。嵌入图像使用稍微不同的参考格式
  • CSS支持基本上应该被视为不存在。所有CSS必须是内部的
  • 最好的做法是,在发送HTML电子邮件时,同时为不支持HTML或用户已禁用HTML的客户端发送纯文本版本(是的,确实会发生这种情况)。而且,没有什么好方法可以将复杂的HTML页面转换为纯文本。它基本上是手工完成的;及
  • 电子邮件内容与网页内容不同。网页通常有搜索框、菜单、边栏、页眉、页脚等。这些都是你对发电子邮件不感兴趣的东西。您只对页面的内容感兴趣。因此,博客在这方面做得很好,因为博客文章的内容可以很容易地提取出来。使用任意页面更难

  • 因此,有多种方法可以做到这一点,比如使用cURL获取网页,使用输出缓冲通过require/include捕获网页,等等,但所有这些方法都会遇到上述一个或多个问题。我通常发现处理HTML电子邮件的唯一方法是手动滚动。

    您可以使用输出缓冲区。如果您有一个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页面在电子邮件中的工作方式并不完全相同,所以您可能需要重新考虑这种方法。

    只需在php页面中执行此操作即可

    将此项放在要开始捕获输出的位置:

    把这个放在php的底部

    $HtmlCode=ob_get_contents(); ob_end_flush()

    $fh=fopen('index.html','w'); fwrite($fh,$HtmlCode)

    fclose($fh)

    ?> 然后重定向到html页面
    只需在php页面中执行此操作

    将此项放在要开始捕获输出的位置:

    ob_start()

    把这个放在php的底部

    $HtmlCode=ob_get_contents(); ob_end_flush()

    $fh=fopen('index.html','w'); fwrite($fh,$HtmlCode)

    fclose($fh)

    然后重定向到html页面

    这个问题是问“如何获得php页面的静态输出”还是“如何设置html格式以在电子邮件中工作?”这两个答案针对不同的问题。这对我来说是个坏消息。我已经做了艰苦的工作,用手把所有的东西都转换了,但是我们的客户坚持要求每隔几天更改一些布局。这就成功了。谢谢你的提示。你帮我省了几个小时的脑力活。