【发布时间】:2014-10-20 17:49:43
【问题描述】:
我需要一点帮助。我有一个学校作业,我需要制作一个正则表达式脚本来获取图像(然后上传到数据库,但这不是问题)。真正的问题是我得到了一个包含页面中所有图像的数组,但应该是一个图像,即:
data-src-l="/WebRoot/products/8020/80203122/bilder/80203122.jpg"
这是整个图像的代码:
<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>
这是 PHP 的代码:
<?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 = "/<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/";
preg_match_all($pattern, $htmlcode, $matches);
//print_r ($matches);
$image = ($matches[0]);
$image = str_replace('src="/', 'src="http://www.asaphshop.nl/', $image);
print_r ($image);
?>
更新:图片链接前面必须是指向http://www.asaphshop.nl 的链接,因此它会在网站中查找图片。不在我的本地主机内。如果你不明白我的意思,你可以问;)
【问题讨论】:
-
所以你想要
data-src-l中的一张图片,而不是src中的一张,对吧? -
使用 dom 解析器而不是正则表达式。
-
@Rikesh 没错!
-
@AvinashRaj,我需要用正则表达式完成这项任务