将PHP变量与file_get_contents一起使用

时间:2011-12-19 12:22:50

标签: php

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

我正在使用此代码获取简报模板的内容:

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

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

T_newsletter.php?test=hello

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

有人可以解释一下我会怎么做?

感谢您的帮助

3 个答案:

答案 0 :(得分:3)

  

的file_get_contents( '附连/ 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);

答案 1 :(得分: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
  {
    ...
  }
?>

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

答案 2 :(得分:0)

$response=file_get_contents("attach/T_newsletter.php?test=hello");