空数组应该是一个链接


empty array should be a link

我有一份学校的作业需要做,但我被卡住了。。。我需要制作一个脚本,它应该得到一个带有良好链接的图像,但我得到的只是一个空数组。请帮我做得更好!这是代码:

    <?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']键下一个值的数组的数组,即:

""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属性中的所有值。你想用什么就用什么。