如何使用PHP heredoc输出Bash heredoc块



我需要在网页上显示一个没有任何格式的bash脚本。

bash脚本使用标准的"here-document"块。当我尝试使用PHP heredoc函数输出脚本时,当遇到'<lt;'子字符串。我认为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>';

相关内容

  • 没有找到相关文章

最新更新