gpt4 book ai didi

php - 如何在 PHP 中创建 Wordpress 短代码样式的函数

转载 作者:可可西里 更新时间:2023-11-01 13:12:45 24 4
gpt4 key购买 nike

我正在尝试在 PHP 中创建一个 Wordpress 短代码样式的功能,以用图像替换像“[[133]]”这样的短代码。基本上,我有一个 MySQL 表,其中包含 ID 为 1-150 的图像 URL/标题/字幕,我希望能够使用这样的短代码将它们动态插入到我的页面文本中:

Blabla bla bla bla bla。 [[5]] 另外,bla bla bla bla bla [[27]]嘿,bla bla bla! [[129]]

所以,我只想获取 ID 作为 $id,然后将其提供给 MySQL 查询,例如mysql_query("SELECT title,subtitle,url FROM images WHERE id = $id")然后用 img/title/subtitle 替换“[[id]]”。我希望能够在同一页面上多次执行此操作。

我知道这必须涉及正则表达式和 preg_match、preg_replace、strstr、strpos、substr 的某种组合...但我不知道从哪里开始以及我应该使用哪些函数来做哪些事情。你能推荐一个策略吗?我不需要代码本身——只需要知道对哪些部分使用什么就会非常有帮助。

最佳答案

如果你希望能够像这样编写短代码:

[[function_name_suffix parameter1 parameter2 ...]]

这里有一个更完整的方法,使用 preg_replace_callbackcall_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>&nbsp;<span class='lastname'>".$lastname."</span>";
}

然后这个调用

print shortcodify("My name is [[name armel larcier]]");

将输出:

My name is <span class='firstname'>armel</span>&nbsp;<span class='lastname'>larcier</span>

这只是我现在根据supertrue的想法实现的。

我们非常欢迎任何反馈。

关于php - 如何在 PHP 中创建 Wordpress 短代码样式的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4568463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com