2015-06-16 3 views
0

Мне нужно найти все ссылки CSS в кусок кода с регулярным выражениемКак найти CSS файлы с регулярным выражением

Предположим, у меня есть:

<link rel="stylesheet" type="text/css" href="mystyle.css"> 

Результат матча должен быть mystyle.css Для теперь у меня только ~href=\'.*\.css.*\'~, который соответствует всей ссылке, так что это не нормально.

+1

Лучше использовать DOM не regex – anubhava

+0

Зачем вам нужно использовать регулярное выражение? – legoscia

ответ

1

ответ Картик является "почти" правильно.

Я сделал «немного» изменения в его example, что теперь ловит URLs как:

http://blah.com/style.css 

Модифицированный регулярное выражение выглядит следующим образом:

~(?<=href=")[^"]+\.css~ 
1

Вы можете использовать следующее:

~(?<=href=")[^."]+\.css~ 

См DEMO

0

Там нет никаких оснований использовать regex для этого. Читайте в HTML файл в виде DOM документа и извлекать ссылки таблицы стилей с Xpath:

<?php 

$doc = new DOMDocument(); 
$doc->loadHTMLFile("test.html"); 

$xpath = new DOMXpath($doc); 

$stylesheets = $xpath->query("//link[@rel='stylesheet']/@href"); 

if ($stylesheets->length == 0) { 
    echo "nothing found!\n"; 
} else { 
    foreach ($stylesheets as $stylesheet) { 
     echo "found stylesheet: " . $stylesheet->nodeValue . "\n"; 
    } 
} 

?> 

То есть, для каждого link элемента документа (//link часть), где rel свойство является stylesheet ([@rel='stylesheet']), извлечь атрибут href (/@href).

Смежные вопросы