2012-02-21 1 views
0

Я пытаюсь проверить, приводит ли URL-адрес к изображению, например, «http://i.imgur.com/vLsht.jpg» путем тестирования, чтобы увидеть, если строка содержит «.jpg» или «.png» или «.gif» и т.д.Тестирование, чтобы увидеть, содержит ли строка какой-либо набор других строк в PHP

Мой curent код:

if (stripos($row_rsjustpost['link'], ".png") !== false) { 
//do stuff 
} 

Я хотел бы сделать что-то вроде

if (stripos($row_rsjustpost['link'], ".png" || ".jpg" || ".gif") !== false) { 
//do stuff 
} 
+0

Расширение файла не дает правдивого указания, является ли файл «изображением» или нет. Вы уверены, что хотите полагаться на свой метод? –

ответ

1

Это нормальное использование регулярного выражения через preg_match():

$matches = array(); 
if (preg_match('/\.(png|jpg|gif)/i', $row_rsjustpost['link'], $matches) { 
    // Contains one or more of them... 
} 

// $matches holds the matched extension if one was found. 
print_r($matches); 

Примечание: если строка должна произойти в конце, как расширение файла, прекратить его действие с $:

/\.(png|jpg|gif)$/i 
//-------------^^ 

Если вы пытаетесь найти только одну подстроку, было бы более подходящий для использования stripos(), но вы можете сопоставить несколько разных шаблонов с регулярным выражением, без необходимости изгибать длинную цепочку if/else.

+0

спасибо, что отлично поработали. – Aaronrobeson

0

Если бы я не хотел, чтобы использовать регулярные выражения, вот как я бы это сделать:

Получить последние 4 символов (расширение файла)

$filepath = $row_rsjustpost['link']; 
$extension = substr($filepath, length($filepath) - 4); 

Затем увидеть, если она соответствует pattern:

if (in_array($extension, array(".png", ".jpg", ".gif"))) { 
    // Have a party! 
} 
Смежные вопросы