在MySQL查询中搜索第一个图像标记

时间:2013-10-03 10:17:17

标签: php mysql image loops

我需要在一个名为html的字段中查找MySQL查询中的第一个图像标记(包含博客帖子的HTML。这是我正在使用的查询和while循环...

$query = mysqli_query($dbleads, "SELECT title, html FROM plugin_blog ORDER BY date_added DESC");

while ($row=mysqli_fetch_array($query)){
    $i = 1;
    $i++;
    ?> 
     <!-- echo $row['title'] to be replaced with first image tag in html column -->
     <div class="masonryImage" style="width: 300px; height:250px;"> <? echo $row['title']; ?></div> <?
    if ($i%2 == 0) { ?>
        <div class="masonryImage tweets" style="width:300px; height:175px;"><div class="tweet-content"><? echo $value['text']; ?></div></div>
    <?
    }
  }
// extra parentesis from previous loop from Twitter, meant to be here
}

我正在考虑preg_match('/(<img[^>]+>)/i', $str, $matches)之类的内容,如this question所示,但不确定如何在此数据库查询中实现它。

谢谢!

3 个答案:

答案 0 :(得分:1)

while ($row=mysqli_fetch_array($query)){
    $i = 1;
    $i++;

    preg_match('/(<img[^>]+>)/i', $row['html'], $matches);
    $img = $matches[1];

    if($img) {
        echo $img;
    } else {
        // else goes here
    }

?> 
    <!-- echo $row['title'] to be replaced with first image tag in html column -->
    <div class="masonryImage" style="width: 300px; height:250px;"> <? echo $row['title']; ?></div> <?
    ...

答案 1 :(得分:1)

我甚至不确定它是否可能,但如果可能的话,这样做是件坏事。搜索img-tag虽然在数据库中,但如果在PHP中完成则更快。所以(如果你的preg_match是正确的)这样做:

preg_match('/(<img[^>]+>)/i', $str, $matches);

if ($matches[0]){
    echo $matches[0];
}

答案 2 :(得分:0)

preg_match('/(<img[^>]+>)/i', $row['html'], $matches);

if($matches) {
    $img = $matches[0];
} else {
    // set value $img here
}