我有一个文件夹unit_images
,其中包含随机名称的图像,但它们的前缀与db表中的PRIMARY KEY
相对应。
1_4534534fw4.jpg
2_43534tw4t45.png
你明白我的观点。我正在使用YoxView查看图像,我正在做这样的事情:
<?php
$query = "SELECT id FROM images WHERE unit = ".$_GET['id']."";
$result = mysqli_query($con, $query);
echo '<div class="yoxview">';
while ($row = mysqli_fetch_assoc($result))
{
echo '<img src="unit_images/01.jpg" alt="First" title="First image" />
<img src="unit_images/02.jpg" alt="Second" title="Second image" />'
}
echo '</div>';
?>
我想列出我的文件夹unit_images
中的图像。该单元是当前正在显示的单元。我只是不知道如何告诉PHP文件名。我想在SQL中执行类似于1_%
的操作。那有意义吗?因为我不知道文件名的其余部分是什么样的,所以我只需要告诉php它并不重要。
答案 0 :(得分:1)
与文件适用于文件的%
通配符最接近的是shell的*
通配符,可通过the glob()
function在php中找到。您可以按如下方式迭代其结果:
foreach (glob("unit_images/1_*.jpg") as $filename) {
echo '<img src="unit_images/' . htmlspecialchars(basename($filename))
. '" />';
}
答案 1 :(得分:1)
如果我理解正确,您希望获得具有特定前缀的目录中的项目列表。
步骤1(使用sandir()
确定目录中的项目):
$files = scandir('unit_images');
步骤2(消除不需要的图像名称):
for ($i=0; $i<count($files); i++)
{
$file = $files[i];
$prefix = explode("_", $file)[0];
if ($prefix != $_GET['id'])
{
unset($files[i]);
}
}
$files
现在只是一个前缀为$_GET['id]
的文件名数组
答案 2 :(得分:0)
我的建议是将文件的全名存储在一列中,以便您可以直接引用它,而不必在文件系统中搜索匹配的名称。
话虽如此,您可以使用glob
PHP函数搜索文件。
也许你可以这样做:
glob("unit_images/<YOUR_PRIMARY_KEY>_*.{png,jpg}", GLOB_BRACE);