来自维基百科页面的废品图片网址

时间:2013-12-13 13:57:17

标签: php regex

我创建了正则表达式,它从页面的源代码中提供了图像URL。

<?php
function get_logo($html, $url)
{
//preg_match_all('', $html, $matches);
//preg_match_all('~\b((\w+ps?://)?\S+(png|jpg))\b~im', $html, $matches);
    if (preg_match_all('/\bhttps?:\/\/\S+(?:png|jpg)\b/', $html, $matches)) {
        echo "First";
        return $matches[0][0];
    } else {
        if (preg_match_all('~\b((\w+ps?://)?\S+(png|jpg))\b~im', $html, $matches)) {
            echo "Second";
            return url_to_absolute($url, $matches[0][0]);
//return $matches[0][0];
        } else
            return null;
    }
}

但是对于维基百科页面图片网址就像这样

http://en.wikipedia.org/wiki/File:Nelson_Mandela-2008_(edit).jpg 我的正则表达式总是失败。

我怎样摆脱这个?

1 个答案:

答案 0 :(得分:4)

为什么尝试使用正则表达式解析HTML,这可以通过PHP中的DOMDocument类轻松完成。

<?php
$doc = new DOMDocument();
@$doc->loadHTMLfile( "http://www.wikipedia.org/" );

$images = $doc->getElementsByTagName("img");

foreach( $images as $image ) {
    echo $image->getAttribute("src");
    echo "<br>";
}

?>