|
|
|
| нужно регулярное выражения которое выбирает путь к favicon из указаной ссылкой страницы
нужно найти строку
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
или
<link rel="shortcut icon" href="http://site.ru/favicon.ico" type="image/x-icon">
|
проблема с самим регулярным выражением | |
|
|
|
|
|
|
|
для: Kreker
(13.08.2008 в 23:33)
| | > проблема с самим регулярным выражением
А где оно?:) | |
|
|
|
|
|
|
|
для: BinLaden
(13.08.2008 в 23:41)
| | проблема его сделать
<?php
$content = file_get_contents("http://vfose.ru");
preg_match("|<link rel=\"shortcut icon\" href=\"( *???* )\" type=\"image/x-icon\">|i", $content, $link);
print $link[1];
?>
|
вот незнаю что заместо *???* поставить | |
|
|
|
|
|
|
|
для: Kreker
(14.08.2008 в 00:06)
| |
preg_match("|<link rel=\"shortcut icon\" href=\"(.+?)\" type=\"image/x-icon\">|i", $content, $link);
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(14.08.2008 в 00:31)
| | это работает спасибо
еще небольшая проблема на некоторых сайта строка иконки такая
<link rel="shortcut icon" href="http://vkontakte.ru/images/favicon.ico" />
|
как сделать чтоб присутвие или отсутсвие типа type="image/x-icon" не учитывалось
а так же если вожножно <link rel="shortcut icon" и <link rel="icon" можно было описать в одном регулярном выражении | |
|
|
|
|
|
|
|
для: Kreker
(14.08.2008 в 01:01)
| | Если учесть что теги могут быть в любом регистре и атрибуты ещё могут идти в любом порядке ,
и не учитывать что могут быть пробелы до и после знака =
,)
,, то получится громоздкое и медленное выражение похожее на такое.
<pre><?php
$str = '
<link rel="shortcut icon" type=\'image/x-icon\' href="1/favicon.ico"/>
<link href="2/favicon.ico" rel="shortcut icon"/>
<link type="image/x-icon" href="3/favicon.ico"
rel="shortcut icon"/>
<link href=../4/favicon.ico type=\'image/x-icon\' rel=\'shortcut icon\'/>
<link href=\'/5/favicon.ico\' rel=\'shortcut icon\'/>
<link href="style.css" rel="stylesheet"/>
';
preg_match_all(
'#<link(?:(?!\shref)(\srel=[\'"]shortcut icon)?[^>]\S*)*\shref=[\'"]?([^\'" >]+)(?(1)|(?:(?!\srel)[^>]\S*)*\srel=[\'"]shortcut icon)#is',
$str, $str);
print_r($str[2]);
?>
|
, медленно работает даже с такой небольшой строкой линков | |
|
|
|
|
|
|
|
для: xx77
(14.08.2008 в 13:12)
| | лучше как-то попроще
, типа такого:
<pre><?php
$str = '
<link rel="shortcut icon" type=\'image/x-icon\' href="1/favicon.ico"/>
<link href="2/favicon.ico" rel="shortcut icon"/>
<link type="image/x-icon" href="3/favicon.ico"
rel="shortcut icon"/>
<link href=../4/favicon.ico type=\'image/x-icon\' rel=\'shortcut icon\'/>
<link href=\'/5/favicon.ico\' rel=\'shortcut icon\'/>
<link href="style.css" rel="stylesheet"/>
';
preg_match_all(
'#<link[^>]*?\shref=[\'"]?((?:(?!\.ico)[^\s>\'"])*\.ico)(?=[\s\'">/])#i',
$str, $str);
print_r($str[1]);
?>
|
| |
|
|
|
|
|
|
|
для: xx77
(14.08.2008 в 13:31)
| | спасибо огромное второй вариант лучше,
настолько я понял иконку или вообще могут не прописывать или прописывают максимум 2 раза | |
|
|
|
|
|
|
|
для: Kreker
(15.08.2008 в 01:51)
| | >вариант лучше
может и лучше , но выигрывая в скорости , проигрывается в чём-то другом. И наверное не выберет значения в которых например имя файла favicon.ico.ico ,)
а так слабо понимаю для чего Вы хотите использовать получение адресов этих .ico ,
и бывают-ли другие расширения.
просто попробовал изложить кусочек своей мысли по этому поводу (с) .)
я так думаю что получитса выражение быстрее если не проверять наличие атрибута rel=-"......"
, а просто сверять расширение файла,
может-быть нужно получить весь тег в $str[0]
как-то так например
<?
preg_match_all(
'#<link[^>]*?\shref=[\'"]?([^\s>\'"]+)(?<=\.ico)[^>]*>#i',
$str, $str);
# должно быть получше с "favicon.ico.ico" засчёт(?<=\.ico)
print_r($str);
|
или может нужно выбрать первое или последнее попавшееся значение
из того что могут навставлять или не навставлять в файл ,) | |
|
|
|
|
 14.1 Кб |
|
|
для: xx77
(15.08.2008 в 12:59)
| | Спасибо попробую
а пути иконок нужны для каталога ссылок, чтобы можно было скопировать из на диск,
не на всех сайтах иконка /favicon.ico
прикрепил скриншот | |
|
|
|