2014-03-12 3 views
2

나는 큰 형식을 가지고 있으며 사용자가 작성한 모든 데이터는 특별한 방법으로 취급됩니다. 제출 후 내 양식 템플릿 PHP 파일을로드하고 그것에 양식에서 데이터를 추가해야합니다. 그래서 내 응용 프로그램은 POST 데이터를 처리하고, file_get_contents()을 통해 PHP 템플릿을로드하고, fwrite()은 새로운 PHP 파일에 데이터를 씁니다.file_get_contents()에서 변수를 fwrite()의 값으로 대체하는 방법은 무엇입니까?

하지만 여기에 문제가 있습니다. PHP 템플릿 파일에 있던 변수는 그대로 쓰여집니다. 하지만 PHP 템플릿의 변수를 제출되고 파싱 된 폼 POST 헤더의 값으로 대체해야합니다.

아무도 모르는가?

내 간단한 코드 :

-- 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

'에 fwrite()'하지 않습니다 코드가 그냥 일반 텍스트처럼 모든 귀하의 PHP 구문 분석 . – barell

+0

템플릿이 PHP 파일 인 경우 대신 '포함'하지 않으시겠습니까? – Niloct

+0

@barell 예, 나는 그것을 깨닫지 못했습니다. (그리고 나는 이렇게 생각합니다.) 그러나 더 간단하고 똑 바른 것이 있습니까? – aleskva

답변

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; 
?> 
+1

@AlesKvapil 정말로 파일에 써야한다면,이 대답의 마지막 줄을'fwrite ($ newfile, $ template_html)'대신. – Niloct

+0

두 분 모두 고맙습니다. 시도해 보겠습니다. – aleskva

+0

fwrite() 또는 file_put_contents() –