<?php
$page = file_get_contents("http://natadec0c0.tumblr.com/");
$avatar = preg_match('/<a rel="shortcut icon" href="(http+)"/', $page, $matches) ? $matches[1]: 'http://27.media.tumblr.com/avatar_749f6bc22627_128.png';
echo $avatar;
?>
要抓取复制此标记view-source:http://natadec0c0.tumblr.com/
<link rel="shortcut icon" href="http://25.media.tumblr.com/avatar_fa85d9b5e571_16.png" />
几乎半小时我都陷入了这个问题..希望有人可以帮助我...
答案 0 :(得分:1)
您正在搜索<a rel...
,而不是<link rel...
。
此外,您可能需要(http.+?)
而不是(http+)
。
找到该链接的更好方法是:
if (preg_match('/<link.+?>/si', $page, $link_matches)
&& strpos($link_matches[0], 'shortcut icon') !== false
&& preg_match('/href\s*=\s*"(http:.+?)"/si', $link_matches[0], $matches))
{
$avatar = $matches[1];
}
else
{
$avatar = 'http://27.media.tumblr.com/avatar_749f6bc22627_128.png';
}
在上面的示例中,您首先要查找<link/>
标记,然后在找到的链接标记中查找href
属性。以防它们看起来与您期望它们看起来有点不同。