【问题标题】:Using PHP variables with file_get_contents将 PHP 变量与 file_get_contents 一起使用
【发布时间】:2011-12-19 12:22:49
【问题描述】:

我在一个文件中有一个时事通讯模板,在另一个文件中有一个邮件脚本,它基本上从数据库中提取电子邮件地址并循环遍历每个发送电子邮件给他们的地址。

我正在使用此代码获取时事通讯模板的内容:

$content = file_get_contents('attach/T_newsletter.php');

我现在需要做的是发送 PHP 变量以及这个,例如:

T_newsletter.php?test=hello

然后能够从模板中的 URL 中提取它们并相应地调整内容。

有人能解释一下我会怎么做吗?

感谢您的帮助

【问题讨论】:

  • 你能给我们看看 newsletter.php 吗?
  • 您说的是 GET 还是 POST?这些是传递数据的方法。

标签: php


【解决方案1】:

file_get_contents('attach/T_newsletter.php');

哇!停在那儿。如果这不是 PHP 源代码,那么它不应该有 .php 扩展名 - 如果它是 PHP 源代码,那么你不应该将它发送到邮件列表中。

如果你想执行文件内的代码,那么这不是这样做的方法。一种方法是通过 HTTP 访问文件,例如

file_get_contents('http://localhost/attach/T_newsletter.php');

虽然这简化了向脚本传递参数,但它仍然是一个相当混乱的解决方案。

解决问题的另一种非常可怕的方法是......

ob_start();
include('/attach/T_newsletter.php');
$content=ob_get_contents();
ob_end_flush();

实现这一点的正确方法是

1) 作为包含文件中的函数(或类):

 require_once ('/attach/T_newsletter.php');
 $content=generate_newsletter($params);

2) 使用该文件作为 DATA 文件模板:

 $template=file_get_contents('/attach/T_newsletter.data');
 $content=preg_replace($template_vars, $template_values, $template);

【讨论】:

    【解决方案2】:

    如果您想这样做,您需要将该文件称为“T_newsletter.php”作为 URL 的一部分:

    $content = file_get_contents("http://yourdomain.com/T_newsletter.php?test=hello");
    

    在 T_newsletter.php 内部:

    <?php
      $v = $_GET['test']; // this will be 'hello'
    
      if($v == 'hello')
      {
        ...
      }
      else
      {
        ...
      }
    ?>
    

    如果您不想发出 HTTP 请求,另一种选择是使用 TwigSmarty 等模板引擎直接解析文件。

    【讨论】:

    • 谢谢那太棒了...我试图像 attach/T_newsletter.php?test=hello 那样做,但它什么也没返回。
    • 您的解决方案是从文件系统读取文件还是从“您的域”下载文件?
    • @strauberry 向指定域发出 HTTP 请求。
    【解决方案3】:
    $response=file_get_contents("attach/T_newsletter.php?test=hello");

    【讨论】:

      【解决方案4】:

      最简洁和最灵活的解决方案是使用模板引擎(如smarty),而不是将解析后的内容读取到变量中...您可以在模板文件中使用变量、循环等(请参阅here)并使用 fetch 将结果读入变量(请参阅here)。

      【讨论】:

        猜你喜欢
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 2013-01-10
        • 1970-01-01
        • 2014-03-02
        相关资源
        最近更新 更多