Получение количества реакций из русских соцсетей на php

Про то, что пресловутый вКонтакт дает немало трафика было известно давно. Апгрейд Одноклассников позволил делиться ссылками и прочим (ну хоть в 2011 году и то хорошо).

Все эти сервисы имеют свои кнопочки, надавив на которые можно схоронить понравившийся контент. В теории рядом с кнопочкой может быть показано число раз, которое её нажали.

На практике это использовать совершенно невозможно ибо кнопки разного размера, требуют подключения своих ява-скриптов, ну и на закуску выглядят совершенно мерзко (особенно желтая кнопка «Класс» от Одноклассников).

Тем не менее, вот вам способ учета таких реакций, написанный на чистом php (два часа чтения api c regexp и готово =). Осторожно, учитывая что там каждый раз используется file_get_contents, можно положить сервер на посещаемых ресурсах. Кеширование припилите сами. 

function react_odnoklassniki($url) {
$rq = file_get_contents('http://www.odnoklassniki.ru/dk?st.cmd=extOneClickLike&uid=odklocs0&ref='.urlencode($url));
if ( !$rq ) return 0;
return preg_match("/^ODKL.updateCountOC\('[\d\w]+','(\d+)','(\d+)','(\d+)'\);$/i", $rq, $i) ? (int) $i[1] : 0;
}

function react_vkontakt($url) {
$rq = file_get_contents('http://vkontakte.ru/share.php?act=count&index=1&url='.urlencode($url));
if ( !$rq ) return 0;
return preg_match('/^VK.Share.count\((\d+),\s+(\d+)\);$/i', $rq, $i) ? (int) $i[2] : 0;
}

$react_url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$social_reactions = react_odnoklassniki($react_url) + react_vkontakt($react_url);
echo 'Страница была упомянута в одноклассниках и вконтактах ' . $social_reactions . ' раз.';

Я не поэт, код прожорливый и грязный, но работает.