Тестирование, чтобы увидеть, содержит ли строка какой-либо из набора других строк в PHP - PullRequest
0 голосов
/ 21 февраля 2012

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

Мой текущий код:

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

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

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

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Это правильное использование регулярного выражения через 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 голосов
/ 21 февраля 2012

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

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

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

Тогда посмотритеэто соответствует шаблону:

if (in_array($extension, array(".png", ".jpg", ".gif"))) {
   // Have a party!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...