有没有办法根据格式在表格行中动态显示图像或视频?

我想根据数据库提供的 src 进行图像或视频预览,然后将此预览显示在表中。下面的代码是完整的表格:


<table id="datatable" class="table table-hover table-bordered" style="width:100%">

  <thead>

      <tr>

          <th>Theme</th>

          <th>Visual Idea</th>

          <th>Caption</th>

          <th>Date</th>

          <th>Visual</th>

      </tr>

  </thead>

  <tbody>

      <?php

          $table  = mysqli_query($conn ,"SELECT * FROM content WHERE uidCompany='" . $_SESSION[ "userCid" ] . "' && postStatus='Active'");

          while($row  = mysqli_fetch_array($table)){ ?>

      <tr id="<?php echo $row['uidContent']; ?>">

          <td width="100" data-target="themeContent"><?php echo $row['themeContent']; ?></td>

          <td width="300" data-target="visualIdeaContent"><?php echo $row['visualIdeaContent']; ?></td>

          <td width="600" data-target="captionContent"><?php echo $row['captionContent']; ?></td>

          <td width="100" data-target="dateContent"><?php echo $row['dateContent']; ?></td>

          <td><img src="<?php echo $row['visualContent']; ?>" width="100" /></td>

      </tr>

      <?php }

          ?>

  </tbody>

</table>

我想根据提供的文件扩展名动态更改的是:


<td><img src="<?php echo $row['visualContent']; ?>" width="100"/></td>

我自己尝试过使用 strpos 检查 $row['visualContent'] 是否包含任何扩展名,但由于我对此不是很有经验,所以我没有看到成功。我试过的:


<?php

$image = "jpg jpeg png";

$video = $row['visualContent'];


   if( strpos( $image, $video ) !== false) {

   echo "<td><video width="200" height="200" controls>

   <source src="<?php echo $row['visualContent']; ?>" type="video/mp4">

   </video></td>";

   } else {

     echo "<td><img src="<?php echo $row['visualContent']; ?>" width="100"/></td>";

     }

?>

我可能离解决方案很近,也可能离我很远,这就是我来这里从专家那里获得指导的原因。期待您的回复。


HUX布斯
浏览 198回答 1
1回答

慕码人8056858

在更新 #1 之后,您已经非常接近了!我的英语不是很好,所以我假设您想检查它是视频还是图像并相应地更改 HTML 标记输出。strpos ( https://www.php.net/manual/en/function.strpos.php )的语法是strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ).因此,通过执行strpos( $video, '$row['uidContent'];' ),您会在“mp4”中找到您的 src,这将始终是错误的。此外,您不需要引号、回声和分号$row['uidContent'],因为您想将其用作变量。再次查找基本语法会很棒:)我看到你有$row['uidContent']和$row['visualContent']。我假设visualContent包含媒体 src,所以我在我的建议答案中使用它。如果我错了,请使用 $row 的示例数据更新您的问题。建议代码:// refresher: $video = 'mp4';<td><?php if( strpos( $row['visualContent'], $video) !== false ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<video width='400' controls>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <source src='{$row['visualContent']}' type='video/mp4'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </video>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<img src='{$row['visualContent']}' width='100'/>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; ?></td>
打开App,查看更多内容
随时随地看视频慕课网APP