0

我正在尝试从 PHP 中的 img 标签获取图像地址。这是一个 HTML 页面:

<div class="image">
    <a href="http://mywebpage.com/">
    <img height="317" width="214" alt="Photo" title="Photo" src="http://mydomain.com/image.jpg" itemprop="image">
    </a>
</div>

PHP部分:

$text = file_get_contents("http://www.mydomain.com/page.html");

//i Tried This One:
preg_match_all('/<div class=\"image\">(.*?)<\/div>/s', $text, $out);

//And This one
preg_match('/~src="(.*)"itemprop="image" \/>/',$text,$out);

//Print
print_r($out);

问题是,我不能只获取图像地址!我在 Google 和 Stack Overflow 中搜索并尝试了一些代码。

我希望你们能帮我解决这个问题。

4

4 回答 4

1
First download simple_html_dom
from URL:
http://sourceforge.net/projects/simplehtmldom/

Then you find a file "simple_html_dom.php"

Create a file "getImageSrc.php" and include file "simple_html_dom.php" 

Write code bellow in getImageSrc.php :

<?php 
$url = "www.yoururl.com"; //
$html = file_get_html($url);

         foreach($html->find('img') as $e) {
            echo $e->src; //img src will be print. you can match your src which you want.
            echo "<br />";
    }
于 2013-09-18T05:43:05.277 回答
1

您的第二种模式是导致问题的模式:

preg_match('/~src="(.*)"itemprop="image" \/>/',$text,$out);
             ^         ^^               ^^^
             1         2                 3
  1. 看起来像一个流浪的波浪号。要么使用波浪号,要么使用正斜杠作为分隔符。由于我们在文本中有相当多的正斜杠要匹配,我建议使用波浪号。

  2. 文本中有空格,但正则表达式中没有。也许使用一个\s*以防万一。

  3. 文中没有这样的东西。尽管以防万一那里可能有字符,但您可以使用[^>]*which 表示任何不是>0 次或多次的字符。

应用这三个,我们得到:

preg_match('~src="(.*)"\s*itemprop="image"[^>]*>~',$text,$out);
于 2013-09-18T05:49:47.947 回答
0
preg_match('/<img.*? src=\"(.*?)\".*?>/',$text,$out);

这个对我有用。试试这个解决方案

于 2013-09-18T05:35:38.583 回答
0

尝试这个

preg_match('/src="(.*?)" itemprop="image"/',$text,$match);
print_r("match=>".$match[1]);
于 2013-09-18T05:40:17.493 回答