Нужно регулярное выражение для проверки url картинки, т.е. что бы:
1) url начинался на https (хотя я не уверена, нужно ли это)
2) заканчивался на jpg, jpeg, png
Если я что-то пропустила, то подскажите, пожалуйста.
Я пыталась использовать вот что:
if (preg_match('http(s ?):)|([/|.|\w | \s])*\.(?:jpg | jpeg | png', $_POST['url']))
Но что-то идет нет так.
" Спасибо, а то я совсем не разбираюсь в этих регулярках "
Самое время начинать. Давайте разберём regex-шаблон конкретно для вашей задачи (я не буду заключать его в апострофы, т.к. как записываются строки в PHP вам уже известно):
~^https?://\S+(?:jpg|jpeg|png)$~
Шаблон состоит из нескольких частей, он должен начинаться и заканчиваться любым не буквенно-числовым символом (это ограничители шаблона). В нашем примере в роли ограничителей выступает пара тильд ~...~
~^https?://\S+(?:jpg|jpeg|png)$~
^ ^
Следующий после открывающего ограничителя символ ^ (так называемая "крышка") сообщает о том, что эта позиция подстроки должна соответствовать началу строки (т.е., слева от "крышки" не должно быть никаких символов)
~^https?://\S+(?:jpg|jpeg|png)$~
^
Далее идут пять букв https, означающих сами себя, и квантификатор ?, действие которого относится к предшествующему его символу s. Квантификатор ? служит для ограничения символов (в данном случае, его действие распространяется на букву s), и говорит о том, что символ s может находиться в указанной позиции 0 или 1 раз (иначе говоря, символ s не обязателен, подстрока 'http' без 's' так же будет соответствовать шаблону)
Следующие три символа подстроки :// означают сами себя, и в объяснении не нуждаются.
Нам известно, что валидные URL-адреса не могут содержать пробелов - возьмём это за основу, и после двойных слешей запишем метасимвол \S, означающий любой символ, кроме пробела (не пробел)
~^https?://\S+(?:jpg|jpeg|png)$~
^^
Следующий за ним квантификатор + (плюс) говорит о том, что не пробел в текущей позиции является обязательным, и может встречаться в подстроке 1 или более раз
~^https?://\S+(?:jpg|jpeg|png)$~
^
После "обязательного" квантификатора + записана группа подстрок, заключённых в не сохраняющие скобки (?:...)
~^https?://\S+(?:jpg|jpeg|png)$~
^^^ ^
Не сохраняющие скобки отличаются от обычных тем, что совпавший внутри них текст не захватывается механизмом регулярных выражений, и не может быть использован, как ссылка на эту группу (подмаску). Не сохраняющие скобки служат для ограничения группы альтернативного выбора (ИЛИ "|")
(?:jpg|jpeg|png)
^ ^
Ну и последний метасимвол - $ (знак доллара) служит для ограничения шаблона, и обозначает конец подстроки. Иначе говоря, после него не должно быть никаких символов, кроме символа конца строки
~^https?://\S+(?:jpg|jpeg|png)$~
^
Итак, этот шаблон можно прочитать так: строка соответствует шаблону, если:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Написан парсерПри вносе в базу данных чем больше она становится тем медленнее грузится
Пишу биржу телеграм, столкнулся с такой проблемой: для некоторых действий на сайте нужно сначала войти в системуКак сделать, чтобы при переходе...
Собираюсь писать довольно большой проект именно на PHPНикак не могу выбрать, что же лучше подойдет функциональный стиль или же ООП