如何用fwrite()中的值替换file_get_contents()中的变量?

时间:2014-03-12 22:42:54

标签: php forms file-get-contents fwrite

我有大表单,用户编写的所有数据都以特殊方式处理。提交后我的表单应加载模板php文件并将表单中的数据添加到其中。所以我的app处理POST数据,通过file_get_contents()加载php模板,并且fwrite()将数据写入新的php文件。

但问题出现了。 php模板文件中的变量按原样写入。但我需要通过提交和解析后的表头POST中的值替换php模板中的变量。

有人知道,怎么做?

我的简化代码:

-- form.php
<Form Action="process.php" Method="post">
<Input Name="Name1" Type="text" Value="Value1">
<Button Type="submit">Submit</Button>

-- process.php
$Array=array(
"Name1","Name2",//...
);
if(!empty($_POST)){
foreach($Array as $Value){
if(!empty($_POST[$Value])){
$Value=$_POST[$Value];
}}}
...
$Template=file_get_contents("template.php");
$File=fopen("../export/".$userid.".html","w+");
fwrite($File,$Template);
fclose($File);

-- template.php
<!Doctype Html>
...
Name1: <?=$Name1?><Br>
...

我的目标:

-- 135462.html
<!Doctype Html>
...
Name1: Value1
...

1 个答案:

答案 0 :(得分:3)

我认为你正在寻找php缓冲区。 ob_ *会帮助你做到这一点。

检查http://php.net/ob_start

template.php:

<html>
<head></head>
<body><?=$foo?></body>
</html>

index.php:

<?php
$foo = $_POST['text'];
ob_start();
include('template.php');
$template_html = ob_get_contents();
ob_end_clean();

//do your stuff

echo $template_html;
?>