我正在致力于CMS的实现,并希望包括类似于word press使用短代码的功能,但是我无法用函数回调替换“短代码”。
我正在使用下面的正则表达式在代码中找到所有“短代码”,并且可以正常工作,我只是想不出如何用函数回调代替它。
正则表达式:/ [([^]] *)] /
我到目前为止所拥有的(不起作用)
function runShortcodes($input){
return preg_replace_callback(
'/\[([^\]]*)\]/', function ($matches)
{
$function = $matches[1];
ob_start();
$function();
$return = ob_get_contents();
ob_end_clean();
return $return;
}, $input
);
}
function event(){
return 'it worked';
}
echo runShortcodes('test [event]');
现在,我只是想将[event]替换为事件函数的返回数据。
答案 0 :(得分:1)
当您使用输出缓冲来捕获短代码函数的值时,您实际上需要从event()
函数中输出某些内容...
function event(){
return 'it worked';
}
只是将值传回,请尝试...
function event(){
echo 'it worked';
}
或者删除输出缓冲,然后从短代码中返回值...
function runShortcodes($input){
return preg_replace_callback(
'/\[([^\]]*)\]/', function ($matches)
{
$function = $matches[1];
return $function();
}, $input
);
}
function event(){
return 'it worked';
}
echo runShortcodes('test [event]');