PHP-класс для работы с AlexaRank

PHP-класс для работы с AlexaRank

  В этой статье рассмотрим PHP-класс для работы с рейтингом сайтов по версии Alexa. AlexaRank предоставляет много информации о сайтах, но самой интересной является:
  • Популярность (один из самых главных)
  • Доступность
  • Ссылки на сайт
  • Скорость
  Alexa предоставляет информацию во многих удобных форматах, включая XML. Используя XML, который предлагает Alexa, мы имеем доступ к информации о сайте на своих страницах. Рассмотрим класс, который позволяет получать информацию о AlexaRank быстро и легко. PHP-класс разработан для PHP4 и PHP5.

Версия кода для PHP4:

/* the alexa rank class */
class alexa
{
	/* initial vars */
	var $xml;
	var $values;
	var $alexa_address;

	/* the constructor */
	function alexa($alexa_address,$domain)
	{
		$this->alexa_address = $alexa_address;
		$this->xml = $this->get_data($domain);
		$this->set();
	}

	/* gets the xml data from Alexa */
	function get_data($domain)
	{
		$url = $this->alexa_address.'http://'.$domain;
		$xml = file_get_contents($url);
		return $xml;
	}

	/* set values in the XML that we want */
	function set()
	{
		$this->values['rank'] = (preg_match('/POPULARITY URL="[a-z0-9-./]{1,}" TEXT="([0-9]{1,12})"/',$this->xml,$regs) ? number_format($regs[1]) : 0);
		$this->values['reach'] = (preg_match('/REACH RANK="([0-9]{1,12})"/',$this->xml,$regs) ? number_format($regs[1]) : 0);
		$this->values['linksin'] = (preg_match('/LINKSIN NUM="([0-9]{1,12})"/',$this->xml,$regs) ? number_format($regs[1]) : 0);
	}

	/* returns the requested value */
	function get($value)
	{
		return (isset($this->values[$value]) ? $this->values[$value] : '"'.$value.'" does not exist.');
	}
}

Версия кода для PHP5:

/* the alexa rank class */
class alexa
{
	/* initial vars */
	var $xml;
	var $values;
	var $alexa_address;

	/* the constructor */
	function alexa($alexa_address,$domain)
	{
		$this->alexa_address = $alexa_address;
		$this->xml = $this->get_data($domain);
		$this->set();
	}

	/* gets the xml data from Alexa */
	function get_data($domain)
	{
		$url = $this->alexa_address.'http://'.$domain;
		$xml = simplexml_load_file($url) or die('Cannot retrieve feed');
		return $xml;
	}

	/* set values in the XML that we want */
	function set()
	{
		$this->values['rank'] = ($this->xml->SD->POPULARITY['TEXT'] ? number_format($this->xml->SD->POPULARITY['TEXT']) : 0);
		$this->values['reach'] = ($this->xml->SD->REACH['RANK'] ? number_format($this->xml->SD->REACH['RANK']) : 0);
		$this->values['linksin'] = ($this->xml->SD->LINKSIN['NUM'] ? number_format($this->xml->SD->LINKSIN['NUM']) : 0);
	}

	/* returns the requested value */
	function get($value)
	{
		return (isset($this->values[$value]) ? $this->values[$value] : '"'.$value.'" does not exist.');
	}
}

Использование CURL:

Если вы до этого использовали CURL, то можно переписать функцию get_data():
/* gets the xml data from Alexa */   
function get_data($domain)   
{   
    $url = $this->alexa_address.'http://'.$domain;   
    $ch = curl_init();   
    $timeout = 5;   
    curl_setopt($ch,CURLOPT_URL,$url);   
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);   
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);   
    $xml = curl_exec($ch);   
    curl_close($ch);   
    return $xml;   
}  

Использование:

/* retrieve & display rank */   
$alexa_connector = new alexa('http://alexa.com/xml/dad?url=','devoid.com.ua'); // domain only!   
echo 'Rank :: '.$alexa_connector->get('rank'); // returns 118   
echo '';   
echo 'Reach :: '.$alexa_connector->get('reach'); // returns 95   
echo '';   
echo 'Links In :: '.$alexa_connector->get('linksin'); // returns 34,414  

Информация о статье "PHP-класс для работы с AlexaRank"

Автор DeVoid | Сайт http://devoid.com.ua/ | Добавлена 14 Декабря 2007 | Просмотрели 2439 раз

  • Digg it!
  • Delicious
  • +МоёМесто.ru
  • Добавить страницу к Мистеру Вонгу
  • Добавить страницу к Мистеру Вонгу

Комментарии КОММЕНТАРИИ (3)

 17 Августа 2009 19:26:52 |  # 

Вставил код, как указано, выдает ошибку...

http://alexa.com/xml/dad?url=http://isle-blog.ru" - нет такого адреса. Вы бы не могли готовый файлик выложить данного примера, чтоб можно было просто заинклюдить в шаблон темы?

 17 Августа 2009 19:28:13 |  # 

Капец какой-то... Комментарий улетел за границы сайта ??? Проверьте, пожалуйста.

 9 Ноября 2009 18:47:10 |  # 

Данный скрипт бессовестно стырин отсюда: http://davidwalsh.name/php-alexa-rank-fetcher-xml

Он уже давно не работает. Администрация, видимо, дилетанты, как впрочем, и все остальные в рунете - только тырить чужое умеют :( Хоть бы иногда кто здесь комментарии читал... :(

Зарегистрируйтесь или выполните Вход для того чтобы оставлять комментарии