sup*_*rue 6 php wordpress shortcode
我试图在PHP中创建一个Wordpress短代码样式的功能,用图像替换像"[[133]]"这样的短代码.基本上,我有一个图像URL /标题/副标题的MySQL表,ID为1-150,我希望能够使用这样的短代码将它们动态插入到我的页面文本中:
Blabla bla bla bla bla.[[5]]此外,唧唧歪歪喇嘛喇嘛[[27]]嘿,并唧唧歪歪![[129]]
所以,我只想把ID作为$ id,然后将其提供给MySQL查询,如mysql_query("SELECT title,subtitle,url FROM images WHERE id = $ id"),然后替换"[[id]] "用img/title/subtitle.我希望能够在同一页面上多次这样做.
我知道这必须涉及正则表达式和preg_match,preg_replace,strstr,strpos,substr的一些组合...但我不知道从哪里开始以及我应该使用哪些函数来做哪些事情.你能推荐一个策略吗?我不需要代码本身 - 只知道使用哪些部分将非常有用.
如果你想能够写这样的短代码:
[[function_name_suffix parameter1 parameter2 ...]]
Run Code Online (Sandbox Code Playgroud)
这是一个更完整的方法,使用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);
}
Run Code Online (Sandbox Code Playgroud)
如果定义了此函数:
function shortcode_name($firstname="",$lastname=""){
    return "<span class='firstname'>".$firstname."</span> <span class='lastname'>".$lastname."</span>";
}
Run Code Online (Sandbox Code Playgroud)
然后这个电话
print shortcodify("My name is [[name armel larcier]]");
Run Code Online (Sandbox Code Playgroud)
将输出:
My name is <span class='firstname'>armel</span> <span class='lastname'>larcier</span>
Run Code Online (Sandbox Code Playgroud)
这只是我现在根据supertrue的想法实现的.
任何反馈都非常受欢迎.
getimage($id)通过执行 MySQL 查询并格式化替换文本的函数,这几乎可以完成您需要的一切:
$text = "Blabla [[5]] and [[111]] bla bla bla [[27]] and bla bla bla! [[129]]";
$zpreg = preg_match_all('#\[\[(\d{1,3})\]\]#', $text, $matches );
var_dump( $matches[1] );  
$newtext = preg_replace('#\[\[(\d{1,3})\]\]#', getimage($matches[1][?????]), $text);
echo $newtext;
Run Code Online (Sandbox Code Playgroud)
我只需要弄清楚要放入其中的内容getimage()(?????? 在哪里),这将使其放入正确的图像中[[id]]。
有关更多详细信息,请参阅preg_match_all和preg_replace官方文档。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3418 次  |  
        
|   最近记录:  |