2010-06-18 52 views
2

我正在嘗試file_get_contents並輸出php代碼作爲字符串而沒有正在呈現。我們的想法是抓住原始未呈現文件的內容,從而它們可以在一個textarea進行編輯...php:file_get_contents正在剝離php代碼

// file "foo.php" I'm needing the contents of 
<h1>foo</h1> 
<? include 'path/to/another/file' ?> 

// php file that's calling the file_get_contents 
<?php 
    echo file_get_contents('foo.php'); 
?> 

上面的代碼被剝出的PHP包括foo.php其輸出:

<h1>foo</h1> 

有誰知道我怎樣才能得到foo.php內容作爲原料未呈現字符串,其中輸出將?:

<h1>foo</h1> 
<? include 'path/to/another/file' ?> 

任何幫助,不勝感激!

+1

你有沒有看到生成的源以確保內容是真的走了嗎? – Charles 2010-06-18 19:59:19

+0

你做了什麼應該工作。我能想到的唯一情況是失敗的是,如果你訪問foo.php作爲URL(http://domain/foo.php)... – 2010-06-18 20:01:32

+0

Doh!好的,它在源代碼中顯示,但不在DOM中? – shanebo 2010-06-18 20:02:57

回答

10

據我所知,除非它在同一臺服務器上,否則無法獲取php內容。 確保你試圖訪問本地託管的文件,而不是遠程的,它應該工作。

此外,如果你嘗試echo代碼,它會嘗試解析它,所以傳遞它通過htmlspecialchars($source)它應該工作。

事情是這樣的:

<?php 
    echo "<pre>"; 
    echo htmlspecialchars(file_get_contents('file.php')); 
    echo "</pre>"; 
?> 

將回聲php文件格式的源代碼,包括註釋和它任何其他文本,而不解析。而且由於它看起來對你很重要,所以我也會說它顯示在DOM當然,因爲它不再是代碼,現在它是文本。你可以把它放在一個容器中,調整它的樣式,並隨它做任何你想做的事情。

+1

完美工作。感謝這個梅赫姆! – shanebo 2010-06-18 20:35:45

+0

很高興我可以幫助你,祝你的項目好運 – 2010-06-18 20:39:11

-1

你也可以這樣做:

<?php 

highlight_file('file.php'); 
// or alternatively 
echo highlight_file('file.php',true); 

,這將輸出像htmlspecialcharsfile_get_content但內<code>標籤和一些語法高亮的文件。

highlight_string

(PHP 4,PHP 5,PHP 7)

highlight_string - 串的語法高亮

highlight_file

( PHP 4,PHP 5,PH的P7)

highlight_file - 文件的語法高亮

+0

2010年的答案是一個更完整,更好的答案。我不認爲你的答案確實解決了OP正在尋找的確切問題。請參閱上面的Juan Cortes的回答。 – Benny 2017-10-17 18:42:04

+0

@benny我在想「我正在試圖將file_get_contents和php代碼作爲字符串輸出而不被呈現」恰恰是'highlight'指令的要點,並且對未來的用戶來說將是一個有用的工具。 – 2017-10-17 19:17:04