如何使用PHP输出Bash heredoc块heredoc

如何使用PHP输出Bash heredoc块heredoc

问题描述:

我需要在没有任何格式的网页上显示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 

这是因为<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