Первую часть Вы можете прочитать здесь.
Итак. Прошлый раз мы написали сам счетчик, которому осталось только передать строку, содержащую количество обратных ссылок в скрипт, написанный прошлый раз, и он сгенерирует картинку самостоятельно.
Теперь нужно написать скрипт, позволяющий получить это число. Я буду использовать Yahoo для определения количества обратных ссылок. Вы можете изменить скрипт на Ваше усмотрения для работы с другим сервисом.
Nokia правильно привел комментарий к моей прошлой статье. Для определения количества беков достаточно пройти по этому адресу и посмотреть число в скобках напротив Inlinks. То есть его-то мы и должны получить.
Сейчас будет граббер.
Чтобы получить число, нужно вытащить код страницы и с помощью регулярных выражений найти нужную информацию. Для получения кода страницы я буду использовать обычную работу с файлами (любители curl – не гневайтесь, сейчас ситуация тривиальная и ничего «ацкого» не нужно).
Код простой, как колбаса:
$data = "";
$file = fopen ("http://siteexplorer.search.yahoo.com/search?
p=http%3A%2F%2Flamara-nsk.ru&y=Explore+URL&fr=sfp", "r");
while (!feof ($file)){
$data .= fread ($file, 255);
}
fclose ($file);
echo htmlspecialchars ($data);
Соответственно, работает так. В $data мы запишем исходник страницы (обнуляем ее на всякий случай). Открываем адрес, как обычный файл (для чтения). Читаем все из «файла» в цикле и закрываем файл. Потом я вывел все для наглядности. Сделаю замечание: не все хостеры позволяют делать такие вещи (открывать адрес, как файл), хотя на всех хостингах, где я хостился такая возможность была.
Так, теперь нам нужно выдрать нужный нам кусок. Регулярное выражение тоже очень простое. Тут вообще ничего сложного похоже нет Код простой как жареная курица с сыром:
preg_match ("/Inlinks (.*)/", $data, $match);
$count = strip_tags(str_replace ("(", "", str_replace (")", "", $match[1])));
echo $count;
Регулярное выражение выдирает нам значение (2,208). Оно аж запятой уже разделено, но нужно удалить кавычки. Запомните, начинающие программисты! Важно как можно больше извращаться в коде! И вот яркий пример – удалить кавычки удалось самым извращенным способом. Соответственно, «голое» число ссылок записано в переменную $count, которую нужно передать счетчику.
Для передачи числа счетчику можно прямо в адресе изображения для тега <img> дописать как обычный GET-запрос: img.php?id=… Так и сделаем. Приведу сразу полный кусок кода.
Код простой, как салат с сухарями… Похоже, пора обедать уже.
<!-- Вызываем счетчик немного другим способом, с передачей параметра: -->
<img src="./counter.php?count=<?php echo $count; ?>">
/* В самом скрипте, рисующим счетчик кое-что исправляем: */
$number = $_GET['count'];
Готово. Да, есть некоторый косяк с регуляркой – кроме скобок оно цепляет еще и теги, которые мы вырезаем с помощью strip_tags. Почему так – попробуйте разобраться самостоятельно в качестве упражнения. Вот хорошие материалы по регулярным выражениям: часть 1, часть 2. [кажись отмазался =)]
UPD: Вышло у меня вот так:
Скачать исходник в моем исполнении.
Оставьте свой комментарий
|
23.10.2008 в 12:35 дп
Лень собирать код, но кнопочку хочу, где скачать готовый результат?
23.10.2008 в 8:02 дп
В статье (снизу) появилась ссылка на скачку исходника
28.10.2008 в 5:28 пп
11.05.2009 в 4:30 пп