2015-05-28 3 views
0

У меня есть ведро S3 с изображениями, имена которых следуют по простому шаблону. Первые 6-значные групповые изображения по листинговому номеру, отстающие цифры не являются последовательными, но следуют над надежным шаблоном (от 0 до 99). Я фиксирую шесть цифр, которые запускают имя файла в переменной $ln.Получить изображение из корзины S3, соответствующей шаблону (PHP)

/* 
https://s3.amazonaws.com/stroupenwmls2/602665_10.jpg 
https://s3.amazonaws.com/stroupenwmls2/602665_12.jpg 
https://s3.amazonaws.com/stroupenwmls2/602665_13.jpg 
https://s3.amazonaws.com/stroupenwmls2/602665_15.jpg 
*/ 

То, что я хочу сделать, это заполнить «список» IMG SRC атрибут с URL к изображению, если он существует для этого списка (если нет, то я не предоставить не-image.jpg). И я перебираю множество разных списков, чтобы создать свою веб-страницу.

Я борюсь с логикой, чтобы захватить первое изображение, которое соответствует переменной $ listing. Вот то, что я пытался, не повезло (только производит 0):

$bucket = 'https://s3.amazonaws.com/stroupenwmls2/'; 
$ln = '602665'; 
$string = $bucket . $ln . '_'; 
// match the pattern '_xx.jpg', with 1 or 2 numbers 
$image = preg_match('/^_[0-9]{1,2}\.(jpg|jpeg|png|gif)/i', $string); 

Тогда в моем веб-приложение:

<img src="<?php echo $image ?>"> 

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

ответ

0

Проблема в том, что вы не согласуетесь с путями изображений, вы согласны с тем, что я предполагаю, что вы намерены быть частью вашего регулярного выражения. См. Ниже:

$bucket = 'https://s3.amazonaws.com/stroupenwmls2/'; 
$ln = '602665'; 
$re = $bucket . $ln . '_' + '[0-9]{1,2}\.(jpg|jpeg|png|gif)'; 

// let's say you have an array called img_list; 
// loop through each path in the list, searching strings 
// that match the regular expression constructed in $re. 
// if you find a match, return it. 
// you'd probably want to define a function to do this for you, 
// and call it with the $listing and array as parameters. 

foreach (img_list as $img) { 
    // this returns either 0 or 1 depending on match. 
    // return the first one, and we're done. 
    if (preg_match('/^' . $re . '/i', $img)) { 
    return $img; 
    } 
} 
+0

Да, я включил образец этих изображений в начале моего вопроса. В ведро S3 есть тысячи изображений, если один (или более) существует, который соответствует первым 6 номерам, я хочу захватить его, чтобы показать его в своем веб-приложении. –

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