Я пытаюсь получить это из CSS-файлов:
url(/myServer/img/mosaico.png)
и я пытаюсь с этим:
preg_match_all('/url\((["\']?)((?!["\']?[data:]?).*?\.(gif|png|jpg|jpeg|svg|woff|eot|ttf))\\1\)?/i', $content, $matches, PREG_SET_ORDER))
Но это не работает свойство, выражение только фиксирует некоторые вхождения. В чем проблема?
Мне также нужно получить части в скобках в регулярном выражении, например:
array(
(int) 0 => 'url(/img/arrow-top-white.png)',
(int) 1 => '',
(int) 2 => '/img/arrow-top-white.png',
(int) 3 => 'png'
)
Вы можете использовать приведенное ниже регулярное выражение для сопоставления всех строк, упомянутых выше.
url\(((?:\/[^\/()]+?)+?\.(gif|png|jpg|jpeg|svg|woff|eot|ttf))[^)]*\)
<?php
$content = "url(/myServer/img/mosaico.png)";
preg_match_all('~url\(((?:\/[^\/]+)+\.(gif|png|jpg|jpeg|svg|woff|eot|ttf))\)~', $content, $matches, PREG_SET_ORDER);
print_r($matches);
?>
Выход:
Array
(
[0] => Array
(
[0] => url(/myServer/img/mosaico.png)
[1] => /myServer/img/mosaico.png
[2] => png
)
)
Других решений пока нет …