2012-07-31 63 views
1

我已經用下面的代碼來創建PHP文件動態如何插入在PHP文件模板

$value = 5; 
$file = $compname.'.php'; 
$file_pointer = fopen($file, 'w'); 
$string = '<?php $var = '. $value .' ?>'; 
fwrite($file_pointer, $string); 
fclose($file_pointer); 
include($file); 
echo $var; 

是否有可能在該PHP文件中插入模板和文件名conatins空間是可以去除這些空間並添加「 - 」

+2

...這是什麼,我什至不是......你是批量生產PHP文件,每個只保存一個變量嗎?另外,「插入模板」是什麼意思? – Palladium 2012-07-31 15:51:23

+0

您能否詳細說明您想實現的目標?這裏的某個人可能會給你一個更好的解決方法,而不是爲單個變量編寫文件。 – FatalError 2012-07-31 15:54:25

+0

你會得到更好的基於$ COMPNAME在數據庫中保存的一些值,而不是創建配置文件?如果不是那麼你可以創建一個像<?php $ var ='#var#'這樣的模板; ?>然後文件(../的template.php),那麼str_replace函數#VAR#與寫回前$值進行再次$ compname.php但是這可能是安全風險,因爲人們可以注入PHP代碼到系統 – Waygood 2012-07-31 15:56:39

回答

2

正如@ianhales提到的,你可以使用str_replace()函數在名稱替換的空格。如果我正確理解你的問題,你想使用模板文件來生成PHP文件的內容。要做到這一點,我會做以下事情。

創建template.txt文件

<?php 
$var = #THEVAR#; 
?> 

然後你使用模板:

<?php 
... 
$value = 5; 
$template = file_get_contents('template.txt'); 
$template = str_replace("#THEVAR#", $value, $template); 
$newFile = fopen($compname.'.php', 'w'); 
fwrite($newFile, $template); 
fclose($newFile); 
... 
1

str_replace()會做你的「」到「 - 」替代。您的問題的其餘部分我不明白。

+2

這甚至是必要的嗎?無論如何,文件名是由OP動態生成的(從它的外觀來看)。更好的問題是:OP爲什麼要問如何改變他動態生成的名稱? – Palladium 2012-07-31 15:53:31

+0

這看起來很公平,但我認爲OP有他們的理由。也就是說,創建自己的問題似乎很奇怪! – n00dle 2012-07-31 15:57:59

0

你的意思是你想有一個預先作出的PHP文件,並改變一些東西嗎?

您可以使用佔位符,例如。

例如 PHP文件

<?php 
$var = '[%%VAR1%%]'; 
?> 

文件編輯器:

//Change filename 
str_replace(' ', '-', $compname); 

//File "template editor" 
$value = 5; 
$file = file_get_contents($compname.'.php'); 
str_replace('[%%VAR1%%]',$value, $file); 
file_put_contents($compname.'.php', $file); 
+0

編輯file_get_contents()來代替打開template.php文件。 – Waygood 2012-07-31 16:00:24

+0

OP可以設置$值爲';的print_r(get_defined_vars());回聲' – Waygood 2012-07-31 16:02:45

+0

OP我可以也有我的公司名稱作爲索引或任何您的腳本被稱爲或模板文件名? – Waygood 2012-07-31 16:05:08

0

,如果你希望你的模板文件是PHP解析後的第一你沒有提到。這種方法可以做(或沒有):

function getTemplateContent($includeFile, $parsePhp = TRUE) { 
$cont = ''; 
if ($parsePhp) { 
    try { 
     ob_start(); 
     require($includeFile); 
     $cont = ob_get_contents(); 
     ob_end_clean(); 
    } catch (Exception $ex) { 
     $cont = ''; 
    } 
} else { 
    $cont = file_get_contents($includeFile); # 
} 
return $cont; 
} 

要包含在書面文件中的模板內容可以像例如做

$string = '<?php $var = '. $value . ';' . getTemplateContent($templateFile, TRUE/FALSE) . ' ?>'