2013-09-22 56 views
1

這可能是一個有點乏味。PHP:匹配相應的文件名

我有2套獨立的文件夾中的文件: SET 1:

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

etc

用戶選擇一個圖像(收音機),然後我將其設置爲url上的get變量:

現在,我想匹配另一個文件。

在另一個文件夾中,我有一組這樣的:

盤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」,我想設置一個第二個變量(假設$疊加)到字符串「celeb1-24_59_250_300.png」

任何想法關於如何實現?

我很明顯可以做一個開關,但這意味着每次上傳新的名人圖像時都必須更新代碼。

有沒有什麼動態的方法來實現這一目標?

感謝

JG

+0

看[水珠()](http://php.net/manual/en/function.glob.php) – 2013-09-22 18:28:43

回答

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; 
    } 
} 

OUTPUT:celeb3-54_87_300_400.png

+1

這就像一個夢Shankar,一個起來! – Jacques

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等但是這些不會過濾掉文件,所以你必須這樣做。