2014-10-09 26 views
0

這可能嗎?PHP腳本里面的字符串?

我試圖做到:

  • 創建一個字符串
  • 裏面的字符串形式的HTML模板,添加腳本,像include 'php/countries.php';
  • 回聲整個字符串到HTML頁面

除了第二步以外的任何工作。我希望看到一個php文件將所問的問題回顯到html頁面,包括來自另一個php文件的回顯。

echo "<div id=\"first\"><?php include \'countries.php\'; ?></div>"; 

我已經嘗試了上面,還有如下:

echo "<div id=\"first\">".include 'countries.php'."</div>"; 

這會需要EVAL?

任何和所有的幫助表示讚賞。

+0

include函數返回一個布爾值,而不是字符串。您應該創建一個countries()函數,返回你正在查找的信息,並相應調用該函數。 – rfoo 2014-10-09 18:50:41

+2

'echo「

"; include 'countries.php'; echo "
」;' – Mike 2014-10-09 18:51:27

+0

@rosscowar我總是混淆require和include ..謝謝 – vulpcod3z 2014-10-09 18:55:25

回答

2

似乎有點傻,但你可以做到以下幾點:

echo "<div id=\"first\">" . file_get_contents('countries.php') . "</div>"; 

或者......

echo "<div id=\"first\">"; 
include "countries.php"; 
echo "</div>"; 

或者......

$externalfile = compileexternal('countries.php'); 
function compileexternal($file) { 
    ob_start(); 
    require $file; 
    return ob_get_clean(); 
} 

echo "<div id=\"first\">" . $externalfile . "</div>"; 

如果這些都不是你需要什麼,請更新問題。有十幾種方法。

+0

請顯示您的包含文件的內容。 – 2014-10-09 18:53:40

+1

這可能*不*考慮到countries.php是一個PHP文件,可能包含服務器端代碼。 – Mike 2014-10-09 18:53:41

+0

我喜歡這種方法,儘管@Mike是正確的,countries.php包含更多的代碼。 – vulpcod3z 2014-10-09 18:54:56

0

您可以使用

eval() 

但它是不是一個好的做法。

+1

不擴展這個對話,但我實際上在一個特定情況下使用eval。最好不要使用它,但如果你需要,就把它從用戶輸入中分離出來。 – vulpcod3z 2014-10-09 19:04:14

+1

@Mike你可能會把它與exec()或system()混淆起來。 http://php.net/manual/bg/function.eval.php http://bg2.php.net/manual/en/function.system.php eval解析字符串就像一個包含/必填字段得到解析。 這不是一個好的做法(不像require/include),因爲一個字符串變量可以容納任何東西(真的取消了,但你知道) – ehwas 2014-10-09 19:17:03

+0

@ehwas啊,你是對的。傻我。 – Mike 2014-10-09 20:38:08

0

您可以使用正則表達式。

例如,您的字符串可能是;

<div id="first">{{countries.php}}</div> 

然後你會這樣做;

$string = "<div id='first'>{{test2.php}}</div>"; 

echo preg_replace_callback("/(\{\{.+\}\})/", function($matches) { 
    include_once(str_replace(array("{", "}"), "", $matches[0])); 
}, $string); 
  • 檢查文件是否存在if(file_exists())
  • 檢查可以被包括在該文件(我們不希望包括../../../../../etc/passwd