Задать вопрос

Почему регулярка работает не так как надо?

Ход мысли... (href|src)=['|"][http[s]?://]([domain])/(path/)(filename).(jpg|jpeg|png|gif)
1) Что надо - ссылки на все изображения, могут быть в <a href=""> или <img src="">
(href|src)=['|"]...['|"]
2) Протокол может быть или нет
[http[s]?://]
3) Домен может быть или нет, должен быть в результате
([domain])
4) так же надо получить путь, имя файла и расширение
(path)(filename).(jpg|jpeg|png|gif)

В результате составил следующее выражение
/(href|src)=[\'\"]((http[s]?:\/\/)?([^\/]+)?([^\'\"]+)*\/([^\.]+)\.(jpeg|jpg|png|gif))[\'\"]/i
                         протокол    домен     путь       имя файла  расширение

Вроде бы и работает, но если попадает ссылка, которая не является файлом (чпу), то preg_match_all возвращает false и набор ссылок, найденных до этой ссылки.

Что не так?
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Хекслет
    Java-разработчик
    10 месяцев
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • Учебный центр IBS
    RT-001 Эксплуатация RT.DataLake
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
@marxxt
понравился ответ - поставь ✔
Такое вам подойдет?
(href|src)="([\s\S]+?)"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы