PHP:匹配相应的文件名

时间:2013-09-22 18:23:58

标签: php regex pattern-matching

这个可能有点像。

我在单独的文件夹中有两组文件: 第1集:

  • celeb1.png
  • celeb2.png
  • celeb3.png
  • celeb4.png
  • celeb5.png

用户选择一个图像(无线电)然后我将其设置为url上的get变量:

现在,我想匹配另一个文件。

在另一个文件夹中,我有一个这样的集合:

SET 2:

  • celeb1-24_59_250_300.png
  • celeb2-35_67_200_250.png
  • celeb3-54_87_300_400.png
  • celeb4-88_98_250_350.png
  • celeb5-87_43_300_400.png

我想使用GET变量(即)celeb1.png,然后根据前5个字符选择相应文件的完整文件名。

换句话说,如果$ _GET ['celebimg']是'celeb1.png',我想设置第二个变量(比如说$ overlay)到字符串'celeb1-24_59_250_300.png'

关于如何实现这一点的任何想法?

我显然可以进行切换,但这意味着每次上传新的名人图片时我都必须更新代码。

有没有动态的方法来实现这个目标?

由于

JG

2 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情。既然我们还没有看到你到目前为止所尝试的内容。这只是一个例子。但是代码已经过测试。

<?php
$file='celeb3.png'; // Here is where you will get the param $_GET['set1']

$set2=array(
    'celeb1-24_59_250_300.png',
    'celeb2-35_67_200_250.png',
    'celeb3-54_87_300_400.png',
    'celeb4-88_98_250_350.png',
    'celeb5-87_43_300_400.png'
          );

$set1 = explode('.',$file);
//echo $set1[0];//celeb3

foreach($set2 as $val)
{
    if($set1[0]==substr($val,0,strlen($set1[0])))
    {
        echo $val;//celeb3-54_87_300_400.png
        break;
    }
}
  

输出:celeb3-54_87_300_400.png

答案 1 :(得分:0)

使用glob搜索文件夹

//Get the GET variable
$cimg = $_GET['celebimg'];

//split it so we can just get the name without extention
$nameparts = explode(".",$cimg);

//glob will try to find matches to the string passed 
$matches = glob("/dir/path/{$nameparts[0]}-*.png");

$matches将是一个匹配文件数组

您可以使用其他文件功能,例如scandirreaddir等,但这些功能不会过滤掉文件,因此您必须这样做。

相关问题