0

我正在尝试更改文本中的特定单词。

只是“画廊”bbcode 将回显画廊代码。

一切都很好,但 foreach 循环只返回一行。

这是我的功能

function bbcode_gallery($str){
global $vt,$siteurl;

$thumbheight = "150";
$thumbwidth = "150";

$patterns = "/\[gallery\](.+?)\[\/gallery\]/i";        
$replacements = "$1";          

$bb_str = preg_replace($patterns, $replacements, $str);  
$gal_id = strip_tags($bb_str);
$gal_id = settype($bb_str, "integer");

$images = $vt->tablo("SELECT * FROM gallery_uploads WHERE gal_id = '$gal_id'");

foreach ($images as $image) {

    $replace = '<img src="'.$siteurl.'/'.$image->url.'" width="'.$thumbwidth.'" height="'.$thumbheight.'">';

}
    //var_dump($images); I specified here is below.
$str = preg_replace($patterns, @$replace, $str); 
echo  $str;
}

var_dump(图像) 输出;

Array(
[0] => stdClass Object
    (
        [guid] => 1
        [gal_id] => 1
        [url] => uploads/images/gallery/2bc8e542.jpg
        [type] => gallery
    )

[1] => stdClass Object
    (
        [guid] => 3
        [gal_id] => 1
        [url] => uploads/images/gallery/41ee461a.jpg
        [type] => gallery
    )

[2] => stdClass Object
    (
        [guid] => 4
        [gal_id] => 1
        [url] => uploads/images/gallery/b3768424.jpg
        [type] => gallery
    )

[3] => stdClass Object
    (
        [guid] => 5
        [gal_id] => 1
        [url] => uploads/images/gallery/edb9a830.jpg
        [type] => gallery
    ))

输出;

<p>here is text</p>
<img src="http://site.com/uploads/images/gallery/edb9a830.jpg" width="150" height="150">
<p>here is text</p>

为什么 foreach 循环显示一行?

4

1 回答 1

1

你必须追加而不是替换 var $replace - 所以它应该是

foreach ($images as $image) {
    $replace .= ''; // dot is require to append to string
}
于 2013-06-09T13:07:16.370 回答