我正在尝试在PHP中创建Wordpress短代码样式功能,以将“[[133]]”之类的短代码替换为图像。基本上,我有一个ID为1-150的图像URL/标题/字幕的MySQL表,并且我希望能够使用如下的短代码将其动态插入到页面文本中:
Blabla bla bla bla bla。 [[5]]另外,bla bla bla bla bla [[27]]
嘿,bla bla bla! [[129]]
因此,我只想获取ID为$ id,然后将其提供给MySQL查询,例如
mysql_query(“SELECT标题,副标题,URL来自ID为$ id的图像”)
然后将“[[id]]”替换为img/title/subtitle。我希望能够在同一页面上多次执行此操作。
我知道这必须涉及到正则表达式以及preg_match,preg_replace,strstr,strpos,substr ...的某种组合,但是我不知道从哪里开始以及应该使用哪些函数来执行哪些操作。您能推荐一种策略吗?我不需要代码本身,只知道对哪些部分使用什么将非常有帮助。
最佳答案
如果您希望能够编写这样的短代码:
[[function_name_suffix parameter1 parameter2 ...]]
这是一种更完整的方法,使用
preg_replace_callback
和call_user_func_array
来实现参数化的简码。function shortcodify($string){
return preg_replace_callback('#\[\[(.*?)\]\]#', function ($matches) {
$whitespace_explode = explode(" ", $matches[1]);
$fnName = 'shortcode_'.array_shift($whitespace_explode);
return function_exists($fnName) ? call_user_func_array($fnName,$whitespace_explode) : $matches[0];
}, $string);
}
如果定义了此功能:
function shortcode_name($firstname="",$lastname=""){
return "<span class='firstname'>".$firstname."</span> <span class='lastname'>".$lastname."</span>";
}
然后这个电话
print shortcodify("My name is [[name armel larcier]]");
将输出:
My name is <span class='firstname'>armel</span> <span class='lastname'>larcier</span>
这只是我现在根据supertrue的想法实现的东西。
任何反馈都非常欢迎。
关于php - 如何在PHP中创建Wordpress shortcode样式的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4568463/