Очистите URL-адрес веб-сайта, чтобы получить путь к изображению

Я собираю простой php-скрипт, который создаст список фотоальбомов, которые есть у меня на моей фан-странице в Facebook.

Facebook любезно предлагает Graph API, который возвращает мне хороший список альбомов, однако они больше не предоставляют путь к изображению альбома по умолчанию.

Я хочу написать PHP-скрипт, который загружает URL-адрес альбома через curl и каким-то образом получает путь к первому изображению в таблице, содержащему миниатюры. Это будет значение «src» первого тега img, который имеет класс «UIPhotoGrid_Image».

Блок кода макета, содержащий хорошие вещи, выглядит так:

<div id="album_container">
    <div class="UIPhotoGrid_Container UIPhotoGrid_DefaultPadding">
        <table class="UIPhotoGrid_Table" cellpadding="0" cellspacing="0">
            <tr>
                <td class="UIPhotoGrid_TableCell">
                    <a class="UIPhotoGrid_PhotoLink clearfix" href="http://www.facebook.com/photo.php?pid=5004658&amp;id=20785087272"><img class="UIPhotoGrid_Image img" src="http://photos-e.ak.fbcdn.net/hphotos-ak-snc4/hs080.snc4/35354_422883027272_20785087272_5004658_704231_s.jpg" onload="this.fb_loaded = true;" /></a>
                </td>
                <td class="UIPhotoGrid_TableCell">
                    <a class="UIPhotoGrid_PhotoLink clearfix" href="http://www.facebook.com/photo.php?pid=5004659&amp;id=20785087272"><img class="UIPhotoGrid_Image img" src="http://photos-c.ak.fbcdn.net/hphotos-ak-snc4/hs080.snc4/35354_422883032272_20785087272_5004659_6158094_s.jpg" onload="this.fb_loaded = true;" /></a>
                </td>
                <td class="UIPhotoGrid_TableCell">
                    <a class="UIPhotoGrid_PhotoLink clearfix" href="http://www.facebook.com/photo.php?pid=5004660&amp;id=20785087272"><img class="UIPhotoGrid_Image img" src="http://photos-f.ak.fbcdn.net/hphotos-ak-snc4/hs080.snc4/35354_422883037272_20785087272_5004660_1787119_s.jpg" onload="this.fb_loaded = true;" /></a>
                </td>
            </tr>
        </table>
    </div>
</div>

К сожалению, это выходит за рамки моих текущих возможностей кодирования... Есть идеи?


person Plasticated    schedule 26.07.2010    source источник


Ответы (3)


Вы можете использовать phpsimpledom, чтобы получить путь, используя синтаксис стиля jQuery.

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

person Tom    schedule 26.07.2010

У вас есть несколько возможностей:

1) элегантный, вы создаете дерево dom из своего образца html и извлекаете свой тег

2) менее элегантный, но эффективный, вы можете использовать регулярное выражение для извлечения этой информации

person Guillaume Lebourgeois    schedule 26.07.2010

Вы можете вытащить исходный код сайта в строку с помощью

   $url = “http://www.foo.com”;
   $str = file_get_contents($url);

Без регулярного выражения, которое удовлетворит ваши потребности, я могу только сказать, что в предыдущем опыте я использовал много условных операторов и сильно полагался на substr(), однако это, вероятно, неразумно.

person Brandon Frohbieter    schedule 26.07.2010