空数组应该是一个链接

时间:2014-10-16 12:53:45

标签: php arrays

我从学校获得了这项任务,但我却被卡住了...... 我需要制作一个脚本,它应该得到一个具有良好链接的图像,但我只得到一个空数组。请帮助我做得更好! 这是代码:

    <?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

的后面

1 个答案:

答案 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属性中的所有值。你可以随意使用。