我正在尝试使用str_replace为我自己的CMS构建类似wordpress的插件。因此,当用户将“[do_something]”之类的内容保存到页面内容中时,它将被预构建函数替换。
示例:
<?php function do_something() {
// search database and display something
}
<?php
echo str_replace("[do_something]","<?php do_something(); ?>",$page_content);
?>
然而,使用echo返回
"<?php do_something(); ?>"
作为文本而不是php脚本,无法执行。
有什么建议吗?
最后,我想出了这个:
function plugin($page_content){
$plugins = array(
'[function1]' => 'function1();',
'[function2]' => 'fucntion2();'
);
foreach($plugins as $plugin => $function) {
if (strpos($page_content, $plugin) !== false) {
eval($function);
break;
}
}
}
:)
答案 0 :(得分:1)
试试这个:
<?php
eval(str_replace('[do_something]', 'do_something();', $page_content));
?>
但请记住,使用eval
尤其是用户的输入是非常糟糕的做法。