Я предполагаю, что вы используете PHP Simple HTML DOM Parser .Следующий код не протестирован, но он должен быть достаточно близок к тому, что вам нужно.
Во-первых, вам нужно получить все блоки CSS с помощью поиска, аналогичного приведенному выше.
$css_inline = $html->find("style");
$css_external = $html->find("link[rel='stylesheet']");
... затем вы можете искать во встроенных блоках url()
:
$css_images = array();
function extract_css_images ( $css )
{
global $css_images;
$matches = array();
preg_match_all( "/url\((.*?)\)/", $css, $matches, PREG_SET_ORDER );
foreach ( $matches as $match )
{
$css_images[] = trim( $match[1], "\"'" );
}
}
foreach ($css_inline as $css)
{
extract_css_images( $css->save() );
}
... затем извлечь внешние файлы CSS и повторить:
foreach ($css_external as $css_file)
{
$file = $css_file->href;
$css = file_get_contents($file);
extract_css_images( $css );
}
$css_images
должен быть заполнен URL-адресами изображений.Хорошей идеей будет запустить array_unique
для устранения дубликатов, и вам может понадобиться добавить информацию о пути, если они используют относительные пути.
Опять же, это не проверено по памяти, но оно должно приблизить вас.Это не найдет никаких изображений, которые вставляются с помощью Javascript.Это было бы гораздо сложнее.