2013-02-19 25 views
2

我需要在沒有任何格式的網頁上顯示bash腳本。如何使用PHP輸出Bash heredoc塊heredoc

bash腳本使用標準的'here document'塊。當我嘗試使用PHP heredoc函數輸出腳本時,它會在遇到'< <'子字符串時切斷輸出。我認爲PHP heredoc函數不需要轉義。

如何正確輸出此腳本?

<?php 

$string = $_GET["string"]; 

$bashscript = <<<MYMARKER 
<pre> 

#!/bin/sh 
rm /tmp/blue.sh 
cat <<INSTALL > /tmp/blue.sh 
#!/bin/sh 
cd /tmp 
mkdir output 
cd output 
cat <<EOF > interface.conf 
remote $string 
EOF 
INSTALL 

</pre> 
MYMARKER; 

echo $bashscript; 

?> 

我得到的頁面上的輸出

#!/bin/sh 
rm /tmp/blue.sh 
cat < /tmp/blue.sh 
#!/bin/sh 
cd /tmp 
mkdir output 
cd output 
cat < interface.conf 
remote 
EOF 
INSTALL 

回答

3

這是因爲<INSTALL ><EOF >在瀏覽器中(儘管無法識別)解釋爲標籤。用鼠標右鍵打開它 - >查看源代碼,你會看到它的權利。 剛搬出<pre>和使用htmlspecialchars()來正確顯示:

$bashscript = <<<MYMARKER 
... everything without the <pre> tags ... 
MYMARKER; 

echo '<pre>'.htmlspecialchars($bashscript).'</pre>'; 
+0

謝謝,我應該有回升,最多,時間休息! – Michelle 2013-02-19 16:32:46

+0

適合所有人;很高興我能幫上忙 – 2013-02-19 16:54:43