|
|
|
| Есть код сайта например:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251" /><title>----</title><link rel="icon" href="/favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="/f/1/i/vlalek.css" media="all" /><link rel="stylesheet" type="text/css" href="/f/1/i/main.css" media="all" /><link rel="stylesheet" type="text/css" href="/f/1/i/print.css" media="print" />
|
Написал вот такой код:
<?php
echo "<pre>";
$contents = file_get_contents("http://domains.com");
preg_match_all("#href=(.+?\.css)#is", $contents, $arr_css);
print_r($arr_css);
?>
|
Задумка такая, нужно выдернуть только имена css файлов например (href="/f/1/i/vlalek.css") только то, что выделенно жирным.. Но у меня получается следующее:
Array
(
[0] => Array
(
[0] => href="/favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="/f/1/i/vlalek.css
[1] => href="/f/1/i/main.css
[2] => href="/f/1/i/print.css
)
[1] => Array
(
[0] => "/favicon.ico" type="image/x-icon" /><link rel="stylesheet" type="text/css" href="/f/1/i/vlalek.css
[1] => "/f/1/i/main.css
[2] => "/f/1/i/print.css
)
)
|
Помогите пожалуйста, заранее спасибо.. | |
|
|
|
|
|
|
|
для: AlexDIXI
(02.09.2009 в 23:40)
| | самое простое это вместо
.+?
сделать
[^>]+?
чтобы не выходило за пределы тега
ненамного точнее было-бы например после кавычки если есть
[\'\"]?
выбирать нескобки некавычки и непробелы
[^\s\"\'>]+? | |
|
|
|
|
|
|
|
для: heed
(02.09.2009 в 23:57)
| | с таким параметром работат. Спасибочки огромное!
а вот с этим пробоавал вместо выше, [\'\"]? и с этим [^\s\"\'>]+? возвращает пустой массив.. Я не правильно понял Вас или Вы ошиблись? | |
|
|
|
|
|
|
|
для: AlexDIXI
(02.09.2009 в 23:40)
| | С таким паттерном:
<?php
preg_match_all("#href=[^>]+?\.css#is", $contents, $arr_css);
?>
|
Выводит:
Array
(
[0] => Array
(
[0] => href="/f/1/i/vlalek.css
[1] => href="/f/1/i/main.css
[2] => href="/f/1/i/print.css
)
)
|
Уже как бы есть с чем работать, но можно ли поправить паттерн что б выводило так:
Array
(
[0] => Array
(
[0] => /f/1/i/vlalek.css
[1] => /f/1/i/main.css
[2] => /f/1/i/print.css
)
)
|
| |
|
|
|
|
|
|
|
для: AlexDIXI
(03.09.2009 в 00:08)
| | я имел ввиду что-то такое
'#href=["\']?([^\s"\'>]+?\.css)#i'
или например жадное , но с последующим заглядыванием назад
'#href=["\']?([^\s"\'>]++)(?<=\.css)#i'
/s не поставил потомучто в шаблоне нет метасимвола точки
// непроверял | |
|
|
|
|
|
|
|
для: AlexDIXI
(03.09.2009 в 00:08)
| | > можно ли поправить паттерн что б выводило так
теоретически можно , сделав что-то типа (?<=href=[\'\"]) вместо href=
, но практически лучше выбрать нужное подмаской ([^>]+?\.css),
потомучто каждая нескобка в качестве первого символа будет срабатывать почти на всех символах, и выражение закончится неудачей только после того как проверит все возможные варианты,
а href , встречается сравнительно реже, и фиктивных совпадений будет намного меньше | |
|
|
|
|
|
|
|
для: heed
(03.09.2009 в 00:26)
| | Ага, все понял.. Спасибо огромное еще раз.. | |
|
|
|