如何找到ID字符串和文件名之间的相似性?

时间:2014-12-12 16:23:27

标签: php

我有一个ID列表

$Ids="1201,1240,1511,1631,1663,1666,1716,2067,2095";

并且在/imgs/文件夹中有许多与这些ID相关的jpg文件名。但是有很多ID没有任何图像。

例如/ imgs /

1201_73.jpg
1201_2897.jpg
1240-9834.jpg
1240-24.jpg
1511-dsc984.jpg
1511-dsc34.jpg

我想要实现的是在img文件夹中查找哪些ID 具有图像。

谢谢

更新

$ array = array();

  $foo = explode('.jpg', $images); 
  foreach($foo as $id) { 
    $digi = substr(trim($id), 0,4); 
    if(!in_array($digi, $array)) {
        array_push($array, $digi);
        echo $id . ".jpg <br/>";
          $where .= "id='$digi' or ";

    }
  }

2 个答案:

答案 0 :(得分:0)

首先,将您的ID字符串转换为数组。

$idsArray = explode(',', $Ids);

现在遍历目录,检查每个文件以查看它是否以ID开头。

$hasImages = array();

foreach (new DirectoryIterator(__DIR__ . '/imgs') as $fileInfo) {
    if ($fileInfo->isDot() || $fileInfo->isDir()) {
        continue;
    }

    foreach ($idsArray as $id) {
        if (0 === strpos($fileInfo->getBasename(), $id)) {
            $hasImages[] = $id;
            break;
        }
    }
}

$hasImages = array_unique($hasImages);

$hasImages将包含一个包含图像的ID数组。

答案 1 :(得分:0)

这样的事情应该有效:

$files = glob('/imgPath/*.jpg');
$hasImage = array_unique(array_map(function($file) {
            return explode('-', $file)[0];
        }, $files));

$withimages= array_diff(explode($Ids), $hasImage);