PHP – извлечения путей изображения из css

У меня есть таблица стилей:

.d2 { position:absolute; background:url(../img/delete.png) no-repeat 0px 1px; color:#0066CC; } .reply { position:absolute; background:url(../img/pen.png) no-repeat 0px 1px; top:5px } #about { position:absolute; background:url(../img/abc.png); top:5px } 

Я хочу получить пути к изображениям, у которых нет атрибута no-repeat. Ожидание результата в виде fowllow:

 array('../img/pen.png', '../img/delete.png') 

Related of "PHP – извлечения путей изображения из css"

Этот проверенный код сделает это:

 $imgs = array(); $re = '/url\(\s*[\'"]?(\S*\.(?:jpe?g|gif|png))[\'"]?\s*\)[^;}]*?no-repeat/i'; if (preg_match_all($re, $text, $matches)) { $imgs = $matches[1]; } 

Я бы прочитал файл по строкам.

 <?php $image=array(); // Get a file into an array. In this example we'll go through HTTP to get // the HTML source of a URL. $lines = file('http://www.example.com/'); // Loop through our array, show HTML source as HTML source; and line numbers too. foreach ($lines as $line_num => $line) { if (strpos($line,'no-repeat') 

{if (strpos ($ line, '. png'))

  { $urlpos=strpos($line,'url)); $rightone=strpos($line,'(',$urlpos); $leftone=strpos($line,')',$rightone); array_push($images,substr($line,$rightone,$leftone-$rightone); } } 

}

Если вы ищете только фон (и они следуют этому порядку опций (url, repeat, rest)):

 preg_match_all('~background:\s*url\(['"]?([^)]+)['"]?\)\s+no-repeat[^;]*;~i', $css, $reg); print_r($reg[1]); 

вывод:

 Array ( [0] => ../img/delete.png [1] => ../img/pen.png )