Проверка изображений Imgur с использованием preg_match - PullRequest
0 голосов
/ 01 мая 2018

Я хотел бы использовать функцию preg_match (процедурная, а не oop) для проверки предоставленных пользователем URL-адресов для изображений, размещенных на imgur.com

Цель состоит в том, чтобы включить вызываемое изображение на страницу php (горячая ссылка), где пользователи могут использовать изображение в качестве своего аватара / изображения профиля.

Насколько я знаю, действительная горячая ссылка imgur:

https://i.imgur.com/FILENAME.XYZ

Где «FILENAME» - это что-то вроде «2lcqfvJ», а «XYZ» - это формат изображения, например «jpg». Пример:

https://i.imgur.com/2lcqfvJ.jpg

У меня есть некоторые трудности, чтобы выяснить шаблон для проверки. Я еще использую этот метод для определения допустимых URL-адресов tinypic и imageshack

Я попытался проверить URL, предоставленный пользователем, но, похоже, он не работает:

if ( !preg_match('/^(http|https):\/\/(.*?)\.(imgur)\.(com)\/.(png|jpg|gif|PNG|JPG|GIF)$/i',$url) )

Передав указанную выше ссылку (https://i.imgur.com/2lcqfvJ.jpg), функция не распознает ее как действительную ссылку imgur. Поэтому я могу представить, что с регулярным выражением что-то не так.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

(Опубликован ответ от имени автора вопроса) .

Шаблон ниже работает:

!preg_match('/^(http|https):\/\/(.*?)\.(imgur)\.(com)\/(.*?)\.(png|jpg|gif|PNG|JPG|GIF)$/i',$url)
0 голосов
/ 01 мая 2018

Ваше регулярное выражение может быть упрощено:

!preg_match('~^https?://i\.imgur\.com/\w+\.(png|jpe?g|gif)$~i', $url)
...