用PHP代码或函数替换短代码字符串?

时间:2012-07-31 10:22:31

标签: php bbcode

我试图开发一个短代码替代品,但不能真正掌握它。我想要做的是用户可以写一些像[幻灯片] 10 [/幻灯片]这样的东西然后制作身份证号码为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用上面的查询代码替换[slideshow] 10 [/ slideshow]。对不起我的英语很差。

最好的问候

1 个答案:

答案 0 :(得分:1)

在“//幻灯片代码在此处显示”区域

中添加类似的内容
$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);
        }
    }
}