1

我正在尝试开发一个短代码替换器,但无法真正掌握它。我想要做的是用户可以编写类似 [slideshow]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
   } 
}

这可行,但现在我必须决定幻灯片是出现在帖子的顶部还是底部。但是,如果我想这样做,则此幻灯片会出现在用户编写的位置。因此,它可能会出现在文本中间作为示例。那么是否可以创建 this 的函数,然后使用 preg_replace 将 [slideshow]10[/slideshow] 替换为上面的查询代码。我为我糟糕的英语感到抱歉。

此致

4

1 回答 1

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);
        }
    }
}
于 2012-07-31T12:45:36.350 回答