2010-10-31 58 views
0

我们有一些bbcode,我试图设置某个代码的能力来调用从我们的照片库加载一些图像的函数。所以如果有人放入相册号码,它会将最近的5张照片取出。当我们定期调用这个函数时(在另一页上,就像常规的php语句一样),它按预期工作。但是当我们通过preg_replace系统调用这个函数时,它会在页面顶部加载这个函数。从preg_replace调用php函数会导致函数在页面顶部加载

请点击这里:http://www.greendayauthority.com/news/1961/ 网站顶部的南瓜图片应该位于新闻帖子的下方,“感谢Marcus M.发送新闻”。 - 这是我放在BB代码的[picvault] 1 [/ picvault]

下面是我们如何为设置高亮

$newsPost = preg_replace(array_keys($bbcode), array_values($bbcode), $newsPost); 

这里变出的值是调用我们的功能$设置高亮的部分

"/\[picvault\](.*?)\[\/picvault\]/e" => "relatedImages($1)", 

而这里的relatedImage功能

function relatedImages($albumID) { 

    $queryImage = mysql_query("SELECT * FROM cpg140_pictures WHERE aid = $albumID ORDER BY pid DESC LIMIT 5"); 

    echo "<div class='relatedImages'>"; 
    while($images = mysql_fetch_array($queryImage)) { 

      $relImgPath = $images['filepath']; 
      $relImgName = $images['filename']; 
      $relThumbImgUrl = "http://www.greendayauthority.com/Picture_Vault/albums/$relImgPath/thumb_$relImgName"; 
      $relFullImgUrl = "http://www.greendayauthority.com/Picture_Vault/albums/$relImgPath/$relImgName"; 

     echo "<div class='relImage'> 
         <a href='$relFullImgUrl' rel='lightbox-$albumID'><img src='$relThumbImgUrl'></a> 
        </div>"; 
    } 

    echo " <div class='relImage'> 
         <a href='http://www.greendayauthority.com/Picture_Vault/thumbnails.php?album=$albumID' target='_top'><img src='http://www.greendayauthority.com/images/viewmorephotos.png'></a> 
       </div>"; 
    echo "</div>"; 
} 

回答

2

如果您使用的功能callbac k它会输出其HTML片段马上。发生这种情况是因为它使用了echo。并且,当您的preg_replace在真正的页面输出开始之前调用echo时,图像html将在页面的其余部分之前。

解决方法:使相关图像回调函数使用return而不是回显。

相关问题