2014-03-13 101 views
1

我被製作成PHP的快速表單創建小框架,當我手動編寫代碼時所有工作都正確,但是當我想要包含來自txt文件的代碼時出現問題(我給這個用戶選擇了這個選項,將只是寫在TXT字符串),檢查我的例子更好的理解:來自txt文件的PHP變量

$my_test_variable = "How are you?"; 
$show_this = "|Example 1|Example 2|$my_test_variable|"; 
$a = explode ("|",$show_this); 
echo "First example: $a[1] Second example: $a[2] Variable to show: $a[3]"; 
// This example output: First example: Example 1 Second example: Example 2 Variable to show: How are you? 

第二個例子:

//test.txt -> |Example 1|Example 2|$my_test_variable| 

$show_this = file_get_contents ("test.txt"); 
$a = explode ("|",$show_this); 
echo "First example: $a[1] Second example: $a[2] Variable to show: $a[3]"; 
// This example output: First example: Example 1 Second example: Example 2 Variable to show: $my_test_variable 
// This is problematic because I want that my $my_test_variable show "How are you"; 

你有想法,我怎樣才能把$變量的txt文件,當的file_get_contents威脅本像變量不只是一個字符串?

+1

這有點像[的eval(http://uk.php.net/eval)不會,但請不要使用它。這是一個巨大的安全漏洞。用戶可以對腳本進行任何他們想做的事情。 – machineaddict

+0

我剛剛發現[這個答案](http://stackoverflow.com/a/283232/1057527),這正是你需要的。 – machineaddict

回答

3

你可以嘗試:

$a = explode ("|",$show_this); 
foreach ($a as &$val) { 
    if (strpos($val, '$') === 0) { 
    $val = ${substr($val, 1)}; 
    } 
} 

echo "First example: $a[1] Second example: $a[2] Variable to show: $a[3]";