2013-06-09 3 views
0

Я пытаюсь изменить определенные слова в тексте.Использование preg_replace в тексте, проблема цикла foreach

Только «галерея» bbcode's будет эхом кодов галереи.

Everthing нормально, но цикл 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 loop показывает один ряд?

ответ

1

необходимо добавить вместо замены в вар $ заменить - поэтому он должен быть

foreach ($images as $image) { 
    $replace .= ''; // dot is require to append to string 
} 
+0

Opps, я всегда забываю это ... Спасибо Ochi ... – bencagri

Смежные вопросы