2013-09-22 5 views
1

Это может быть немного doozy.PHP: сопоставьте соответствующие имена файлов

У меня есть 2 набора файлов в отдельных папках: SET 1:

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

и т.д.

Пользователь выбирает изображение (радио), а затем я установил это в качестве переменной получить на URL:

Теперь я хочу, чтобы соответствовать другой файл.

В другой папке, у меня есть набор так:

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», я хочу, чтобы установить вторую переменную (скажем, $ накладку) в строку «celeb1-24_59_250_300.png»

Любая идея о том, как это сделать?

Я, очевидно, мог бы сделать переключатель, но это означает, что мне придется обновлять код каждый раз, когда загружается новое изображение знаменитостей.

Есть ли какой-либо динамический способ достичь этого?

Благодаря

JG

+0

Посмотрите на [Glob()] (http://php.net/manual/en/function.glob.php) –

ответ

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

Это работало как сон Шанкар, один вверх! – 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 будет массив соответствующих файлов

вы можете использовать другие функции файлов, как scandir или readdir и т.д. но они не отфильтровывают файлы, поэтому вам придется это делать.

Смежные вопросы