Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: нахождение цсс
 
 автор: kulibko   (07.11.2007 в 15:50)   письмо автору
 
 

Вот как я нахожу цсс на любой хтмл-странице:
"/<.*?stylesheet.*?href=[\"|']{0,1}((.*?)\.css)[\"|'|>|\s]/si"

но такое <link href="/styles.css" type=text/css rel=stylesheet>
уже не обрабатывается - там stylesheet не перед а после href стоит

Подскажите пожалуйста как сделать так, чтобы оно понимало что stylesheet или перед, или после href, но полюбому должен стоять между < >?

   
 
 автор: Faraon   (07.11.2007 в 16:18)   письмо автору
 
   для: kulibko   (07.11.2007 в 15:50)
 

А так не проще будет

<?php
$text
="<br>ghgngj<link href=\"/styles.css\" type=text/css rel=stylesheet>jhgjgh";
preg_match("|(<link [^>]+>)|is"$text$out);
$css=$out[1];
?>

   
 
 автор: SHAman   (07.11.2007 в 17:35)   письмо автору
 
   для: Faraon   (07.11.2007 в 16:18)
 

А можно еще проще

#href=(['"]?)(.*?\.css)\\1#

   
 
 автор: Faraon   (07.11.2007 в 17:42)   письмо автору
 
   для: SHAman   (07.11.2007 в 17:35)
 

Если только автору надо файл найти
А если всю строку <link ...> то мой вариант

P.S.

['"] 
Здесь надо что-то заэкранировать ;)

   
 
 автор: SHAman   (07.11.2007 в 18:17)   письмо автору
 
   для: Faraon   (07.11.2007 в 17:42)
 

про <link> - да.

про экранирование - :) Это в php надо, а в Perl не надо:) Ну, я думаю, смысл понятен.

   
 
 автор: kulibko   (07.11.2007 в 18:37)   письмо автору
 
   для: SHAman   (07.11.2007 в 17:35)
 

идею понял, спасибо :)
А в более общем случае - если нечто может быть или перед, или после искомого но между < > - как это нечто найти?

   
 
 автор: kasmanaft   (08.11.2007 в 05:12)   письмо автору
 
   для: kulibko   (07.11.2007 в 18:37)
 

Можно использовать опережающую проверку
/<(?=[^>]*?stylesheet)[^>]*?href=[\"']?([^>\s]+\.css)[\"'>\s]/si
Или же просто составить два выражения для обоих случаев.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования