php preg_macthing для захвата аватара Tumblr - PullRequest
0 голосов
/ 09 июня 2011

amm, пожалуйста, проверьте этот код?потому что это не сработает ..

<?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" />

Вот уже почти полчаса я застрял в этой проблеме .. надеюсь, кто-то можетпомоги мне ...

1 Ответ

1 голос
/ 09 июня 2011

Вы ищете <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 в найденных тегах ссылки. Просто на тот случай, если они выглядят немного иначе, чем вы ожидаете.

...