用php代码或函数替换shortcode字符串


replace shortcode string with php code or function?

我试图开发一个短代码替换程序,但无法真正掌握它的窍门。我想做的是,用户可以写一些类似[pslideshow]10[/slideshow]的东西,然后让id为10的幻灯片出现。这是我所到的:

$slideArray = array(preg_match_all('/'[slideshow'](.*?)'['/slideshow']/is', $post, $matches));

有了这个,我就:

for ($o = 0; $o <= $count; $o++) 
   { 
   $query = mysql_query("SELECT * FROM slideshow WHERE id = ''. $matches[1][$o]. '' LIMIT 1");
   while ($row = mysql_fetch_assoc($query))
   {
    // Slideshow code appears here
   } 
}

这是可行的,但现在我必须决定幻灯片是出现在帖子的顶部还是底部。但是如果我想让这个幻灯片出现在用户写的地方。所以它可能会出现在文本中间的一个例子。然后可以创建这个函数,然后使用preg_replace用上面的查询代码替换[pslideshow]10[/slideshow]。我很抱歉我的英语不好。

向致以最诚挚的问候

在"//幻灯片代码显示在此处"区域中添加类似内容

$post = str_replace($matches[0][$o], $row['slideshowfield'], $post);

所有代码应该看起来像:

preg_match_all('/'[slideshow'](.*?)'['/slideshow']/Usi', $post, $matches);
if(!empty($matches[1])){
    foreach($matches[1] as $o => $slideshow_id){
        $query = mysql_query("SELECT * FROM slideshow WHERE id = '". (int)$slideshow_id. "' LIMIT 1");
        if($row = mysql_fetch_array($query)){
            $post = str_replace($matches[0][$o], $row['slideshow_html_fieldname'], $post);
        }
    }
}