我创建了正则表达式,它从页面的源代码中提供了图像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
我的正则表达式总是失败。
我怎样摆脱这个?
答案 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>";
}
?>