quine
第 1 版(2008-11-02 10:06:23 · akkun_choi)を表示しています。 最新版に戻る
自分自身を吐き出すコードのとこ
以下のような構成でつくると自己生成するコードになる
コードの前半部
コード後半部埋め込みリテラル
コード後半部
mainコード
前半部を出力
後半部リテラル内容をリテラル形式に変換して出力
後半部をリテラルから出力
ユーティリティコード
リテラル形式変換
...
PHP版quine
<?php
$str = array(
'echo "<?php\n\$str = array(\n";',
'array_walk($str, \'hoge\');',
'echo ");\n";',
'echo join("\n", $str) . "\n";',
'echo "?>";',
'function hoge($s){echo " \'".str_replace(chr(0x27), chr(0x5c).chr(0x27), $s)."\',\n";}',
);
echo "<?php\n\$str = array(\n";
array_walk($str, 'hoge');
echo ");\n";
echo join("\n", $str) . "\n";
echo "?>";
function hoge($s){echo " '".str_replace(chr(0x27), chr(0x5c).chr(0x27), $s)."',\n";}
?>
前半と後半に分けて変換関数で再現。「'」とか「\」を文字コードで扱う