проблемы с регулярными выражениями

Когда я запускаю следующий скрипт, изображение не отображается хорошо. В чем проблема? Это код:

<?php header('Content-Type: text/html; charset=utf-8'); $url = "http://www.asaphshop.nl/epages/asaphnl.sf/nl_NL/ ObjectPath=/Shops/asaphnl/Products/80203122"; $htmlcode = file_get_contents($url); $pattern = "/class=\"noscript\"\>(.*)\<\/div\>/isU"; preg_match_all($pattern, $htmlcode, $matches); //print_r ($matches); $image = ($matches[0][0]); print_r ($image); ?> 

Это часть ссылки, которую мне нужно скопировать (часть data-src-l):

 <div id="ProductImages" class="noscript"> <ul> <li> <a href="/WebRoot/products/8020/80203122/bilder/80203122.jpg"> <img itemprop="image" alt="Jesus Remember Me - Taize Songs (2CD)" src="/WebRoot/AsaphNL/Shops/asaphnl/5422/8F43/62EE/ D698/EF8E/4DEB/AED5/3B0E/80203122_xs.jpg" data-src-xs="/WebRoot/AsaphNL/Shops/asaphnl/5422/8F43/62EE/ D698/EF8E/4DEB/AED5/3B0E/80203122_xs.jpg" data-src-s="/WebRoot/products/8020/80203122/bilder/80203122_s.jpg" data-src-m="/WebRoot/products/8020/80203122/bilder/80203122_m.jpg" data-src-l="/WebRoot/products/8020/80203122/bilder/80203122.jpg" /> </a> </li> </ul> </div> 

Related of "проблемы с регулярными выражениями"

 $pattern = "#class=\"noscript\">.*data-src-l=([\"'])(?<url>.*)\\1.*</div>#isU"; 

Но лучше иметь дело со страницей, как со структурой DOM, а не как строка. \\1 является обратной ссылкой на ([\"']) так что в конце строки используются одни и те же кавычки. Не так необходимо для URL-адресов, поскольку в них не должно быть прямых кавычек (unescaped), но это хорошо для общего назначения.

ps: если вам нужно все между <img и /> (включая их) – $pattern = '#class="noscript">.*(<img.*>).*</div>#isU';

Используйте DOMDocument (надеюсь, ваша школьная учительница не будет ругать вас) :

 $dom = new DOMDocument(); $dom->loadHTMLFile('http://www.asaphshop.nl/epages/asaphnl.sf/nl_NL/?ObjectPath=/Shops/asaphnl/Products/80203122'); $xpath = new DOMXPath($dom); $url = $xpath->query('//div[@id="ProductImages"]/ul/li/a/img/@data-src-l')->item(0)->nodeValue; echo $url;