2

フォーマットなしで Web ページに bash スクリプトを表示する必要があります。

bash スクリプトは、標準の「ヒア ドキュメント」ブロックを使用します。PHP のヒアドキュメント関数を使用してスクリプトを出力しようとすると、「<<」部分文字列に遭遇すると出力が中断されます。PHP のヒアドキュメント関数はエスケープを必要としないと思いました。

このスクリプトを正しく出力するにはどうすればよいですか?

<?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
4

1 に答える 1

3

これは、ブラウザでタグとして解釈されるためです (ただし、認識されません) <INSTALL ><EOF >右クリックで開く -> ソースを表示すると、正しく表示されます。を移動して<pre>使用htmlspecialchars()するだけで、正しく表示されます。

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

echo '<pre>'.htmlspecialchars($bashscript).'</pre>';
于 2013-02-19T16:23:57.597 に答える