我从学校获得了这项任务,但我却被卡住了...... 我需要制作一个脚本,它应该得到一个具有良好链接的图像,但我只得到一个空数组。请帮助我做得更好! 这是代码:
<?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">.*(<img.*>).*</div>#isU';
preg_match_all($pattern, $htmlcode, $matches);
//print_r ($matches);
$image = ($matches[0]);
print_r ($image);
?>
这是图像代码的一部分:
<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>
data-src-l的代码应该在https://www.asaphshop.nl
的后面答案 0 :(得分:0)
如果您使用过调试器,您会发现实际上并没有得到一个空数组,而是一个包含['0']
键下一个值的数组的数组,这就是:
""class=\"noscript\">\n <ul>\n \n \n \n \n \n \n \n \n \n \n <li>\n <a href=\"/WebRoot/products/8020/80203122/bilder/80203122.jpg\">\n <img\n itemprop=\"image\"\n alt=\"Jesus Remember Me - Taize Songs (2CD)\"\n src=\"/WebRoot/AsaphNL/Shops/asaphnl/5422/8F43/62EE/D698/EF8E/4DEB/AED5/3B0E/80203122_xs.jpg\"\n data-src-xs=\"/WebRoot/AsaphNL/Shops/asaphnl/5422/8F43/62EE/D698/EF8E/4DEB/AED5/3B0E/80203122_xs.jpg\"\n data-src-s=\"/WebRoot/products/8020/80203122/bilder/80203122_s.jpg\"\n \n data-src-m=\"/WebRoot/products/8020/80203122/bilder/80203122_m.jpg\"\n \n data-src-l=\"/WebRoot/products/8020/80203122/bilder/80203122.jpg\"\n />\n </a>\n </li>\n \n \n </ul>\n </div>""
正如您可能知道的那样,您的正则表达式$pattern
出了问题。无论如何,使用正则表达式解析HTML通常是一个坏主意。你到底想要达到什么目的?而且,这是你第五次在这里问同样的问题吗?
更新:
如果您需要获取图片,请使用此正则表达式:<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>
。有了它,您将捕获页面上所有图像的src
标记中的值,然后您可以使用它们来创建自己的图像标记。像这样:
$htmlcode = file_get_contents($url);
$pattern = "/<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/";
preg_match_all($pattern, $htmlcode, $matches);
$matches[0]
数组包含所有图像标记,实际上有16个。 $matches[1]
数组包含图像的src
属性中的所有值。你可以随意使用。