Получить URL из свойства background-image с помощью регулярного выражения

1

Мне нужно получить URL-адрес из регулярного выражения из строки. Мой код:

$mystring = file_get_contents($urlstr);
preg_match('/background-image: url\(\\\'\/\/(.*png)|background-image:url\(\\\'\/\/(.*jpg)|background-image: url\((.*jpeg)|background-image: url\(\\\'\/\/(.*gif)/', $mystring, $A);
$prw = 'http://'.end($A);

Где я неправ?

  • 0
    Не могли бы вы привести несколько примеров? Видение того, что является вводом (и что вы ожидаете от захваченного вывода), может помочь.
  • 2
    Вы должны использовать sabberworm css parser ( github.com/sabberworm/PHP-CSS-Parser/tree/master/lib/Sabberworm/… ) для извлечения значений свойства background-image (в частности, у вас не будет проблем с кавычками или пробелами).
Теги:

2 ответа

1
Лучший ответ

Вы можете попробовать что-то вроде

background-image:[ ]?url\(['"]?(.*?\.(?:png|jpg|jpeg|gif))

который будет соответствовать URL-адресам, найденным в этом примере regex101.

1

Я думаю, что вам нужно регулярное выражение.

\background\-image:\surl\((.*(jpg|png|gif|jpeg))\

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

Обратите внимание, что вы также можете добавить некоторые дополнительные функции, чтобы вы могли поймать все объявления фонового изображения, например, лишние пробелы и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню