我目前只是玩弄PHP及其语法。但我得到一个随机的结果。
我的想法是使用perl生成HTML,然后用PHP define替换certian关键字。无论如何玩这个,这是我现在的想法
dino.php
<?php
$lol = "Seriously, so I can enter text here from DB and stuff...";
function callback($buffer,$lol)
{
return (str_replace("MSG", "$lol", $buffer));
}
ob_start("callback");
$html = shell_exec("/usr/bin/perl /fox/perl/simple.pl 2>&1");
print ($html);
$css = shell_exec("/usr/bin/perl /fox/perl/css.pl 2>&1");
print ($css);
ob_end_flush();
?>
simple.pl
#!/usr/local/bin/perl
print <<HTML;
<table width="auto" border="1" class="center" id="container" cellspacing="10">
<td id="main_content" width="auto" ><b>Baa! </b><br />
Well? what you doing here.. Baaa <br />
MSG
<br />
</td>
<br />
</table>
HTML
现在,页面呈现完美,但是如果字符串 MSG 存在,我得到 9
的结果Baa!
Well? what you doing here.. Baaa
9
对导致九出现的原因感到好奇,我假设我在计算某种价值,但不确定是什么价值,如果我是,为什么 9 ?我应该使用另一种语法吗?
如果我用字符串删除声明(&#34; MSG&#34;,&#34; lol&#34;,$ buffer),它的行为应该如此。用lol替换MSG。
thxs。
答案 0 :(得分:1)
ob_start
并不期待像$foo
这样的传入变量。如drew010所示,回调的格式必须是:
string handler ( string $buffer [, int $phase ] )
您可以通过几种方式解决这个问题。例如:
ob_start(function($buffer) use ($lol) {
return (str_replace("MSG", "$lol", $buffer));
});
或者如果你不介意全局变量:
function callback($buffer)
{
global $lol;
return (str_replace("MSG", "$lol", $buffer));
}
ob_start("callback")