0

我正在尝试用数据库调用替换来自基本 CMS 的简单命令。

用户输入

[gallery id=x]

进入 CMS,我希望它消失,找到该画廊中包含的图像,并显示它们(为 jQuery Cycle 插件做好准备)

我可以得到:

$pattern = '/\[gallery id=(\w+)\]/i';
$rpl     = 'Display Gallery ID ${1}';
$bubble  = preg_replace($pattern, $rpl, $bubble);

...返回“Display Gallery 12”(例如)。但是我需要它来做到这一点:

$sql = "SELECT * FROM galleries INNER JOIN photos ON photos.PhotoGallery=galleries.GalleryID WHERE GalleryID='x'";
$set = mysql_query($sql);
echo '<div id="gallery">';
while($row = mysql_fetch_array($set))
{
 echo '<img src="'.$row['PhotoPath'].'" />';
}
echo '</div>';
4

2 回答 2

1

您可以使用该preg_replace_callback函数,该函数获取正则表达式找到的每个匹配项,并将其替换为从提供的回调返回的字符串。因此,您可以执行以下操作:

function generateGallery($matches) {
    // generate the string here, $matches[1] will be your gallery id
    return "Gallery Content for Gallery " . $matches[1];
}

$pattern = '/\[gallery id=(\w+)\]/i';
$bubble = preg_replace_callback($pattern, generateGallery, $bubble);
于 2013-01-02T22:03:01.537 回答
0

利用:

preg_match($pattern, $string, $matches);

在此之后,ID 位于$matches[1].

于 2013-01-02T22:11:43.293 回答