Ребята, помогите с регуляркой Есть html HTML: <link href="http://1551.opencart.im/image/data/cart.png" rel="icon" /> <link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/stylesheet.css" /> <link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/slideshow.css" media="screen" /> <link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/carousel.css" media="screen" /> <link rel="stylesheet" type="text/css" href="catalog/view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css" /> И регулярка PHP: $preg[2] = '/\<link[ a-zA-Z0-9="\/]+(?:type="text\/css")?+[ a-zA-Z0-9="\/]+href="(.+?)"+[ a-zA-Z0-9="\/]+(?:media="(.+?)?")[^>]*\/>/'; Он удачно находит совпадения только с двумя строками т.е. в которых есть аттрибут media. А если аттрибута нет, или он стоит позади href, тогда он не находит совпадение. Как решить такую проблему? Должен же быть какой-то очень простой выход.
Не понял что именно ищем. Назовите критерий по которому хотите найти совпадение. Если надо все найти то понятно что атрибута media в регулярке быть не должно. А если он есть в регулярке то понятно что те тэги которые его не имеют найдены не будут.
Хотел сделать все в одном выражении. Т.е. задача регулярки - загружать только стили(rel="stylesheet" type="text/css"), если есть media, то брать. Нашел решение PHP: $regex = '/<link[^>](?:rel=\"stylesheet\")+[ a-zA-Z0-9="\/]+href="(.+?)"+[ a-zA-Z0-9="\/](?:media=\"(.*)?\")?[^>]*\/>/' По сути велосипед. Ничего нового, но если порядок аттрибутов в теге другой, то работать не будет( Вывод: PHP: array(3) { [0]=> array(4) { [0]=> string(101) "<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/stylesheet.css" />" [1]=> string(115) "<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/slideshow.css" media="screen" />" [2]=> string(114) "<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/carousel.css" media="screen" />" [3]=> string(130) "<link rel="stylesheet" type="text/css" href="catalog/view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css" />" } [1]=> array(4) { [0]=> string(52) "catalog/view/theme/default/stylesheet/stylesheet.css" [1]=> string(51) "catalog/view/theme/default/stylesheet/slideshow.css" [2]=> string(50) "catalog/view/theme/default/stylesheet/carousel.css" [3]=> string(81) "catalog/view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css" } [2]=> array(4) { [0]=> string(0) "" [1]=> string(6) "screen" [2]=> string(6) "screen" [3]=> string(0) "" }} А так работает и ладно) Sernuzh, спасибо.