Как получить счет Google +1 для текущей страницы в PHP?

Я хочу получить счет Google + 1 для текущей веб-страницы? Я хочу сделать этот процесс в PHP, а затем записать количество акций или + 1 в базу данных. Вот почему, мне это нужно. Итак, как я могу сделать этот процесс (получение счета + 1) в PHP?
Заранее спасибо.

Это работает для меня и быстрее, чем CURL:

function getPlus1($url) { $html = file_get_contents( "https://plusone.google.com/_/+1/fastbutton?url=".urlencode($url)); $doc = new DOMDocument(); $doc->loadHTML($html); $counter=$doc->getElementById('aggregateCount'); return $counter->nodeValue; } 

также здесь для твитов, контактов и Facebook

 function getTweets($url){ $json = file_get_contents( "http://urls.api.twitter.com/1/urls/count.json?url=".$url ); $ajsn = json_decode($json, true); $cont = $ajsn['count']; return $cont; } function getPins($url){ $json = file_get_contents( "http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=".$url ); $json = substr( $json, 13, -1); $ajsn = json_decode($json, true); $cont = $ajsn['count']; return $cont; } function getFacebooks($url) { $xml = file_get_contents("http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($url)); $xml = simplexml_load_string($xml); $shares = $xml->link_stat->share_count; $likes = $xml->link_stat->like_count; $comments = $xml->link_stat->comment_count; return $likes + $shares + $comments; } 

Примечание. Числа Facebook – это сумма понравившихся + акций, и некоторые люди сказали плюс комментарии (я еще не выполнял поиск), в любом случае используйте тот, который вам нужен.

Это будет работать, если ваши настройки php позволяют открывать внешний URL-адрес, проверьте настройку php «allow_url_open».

Надежда помогает.

 function get_plusones($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc"); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); $curl_results = curl_exec ($curl); curl_close ($curl); $json = json_decode($curl_results, true); return intval( $json[0]['result']['metadata']['globalCounts']['count'] ); } 

echo get_plusones("http://www.stackoverflow.com")

от internoetics.com

Пути cURL и API, перечисленные в других сообщениях, больше не работают.

Существует по крайней мере один метод , но он уродлив, и Google явно не поддерживает его. Вы просто копируете переменную из исходного кода JavaScript для официальной кнопки с регулярным выражением:

 function shinra_gplus_get_count( $url ) { $contents = file_get_contents( 'https://plusone.google.com/_/+1/fastbutton?url=' . urlencode( $url ) ); preg_match( '/window\.__SSR = {c: ([\d]+)/', $contents, $matches ); if( isset( $matches[0] ) ) return (int) str_replace( 'window.__SSR = {c: ', '', $matches[0] ); return 0; } 

Следующий PHP-скрипт отлично работает, если вы рассчитываете количество Google+ для акций и + 1.

 $url = 'http://nike.com'; $gplus_type = true ? 'shares' : '+1s'; /** * Get Google+ shares or +1's. * See out post at stackoverflow.com/a/23088544/328272 */ function get_gplus_count($url, $type = 'shares') { $curl = curl_init(); // According to stackoverflow.com/a/7321638/328272 we should use certificates // to connect through SSL, but they also offer the following easier solution. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); if ($type == 'shares') { // Use the default developer key AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ, see // tomanthony.co.uk/blog/google_plus_one_button_seo_count_api. curl_setopt($curl, CURLOPT_URL, 'https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ'); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]'); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); } elseif ($type == '+1s') { curl_setopt($curl, CURLOPT_URL, 'https://plusone.google.com/_/+1/fastbutton?url='.urlencode($url)); } else { throw new Exception('No $type defined, possible values are "shares" and "+1s".'); } $curl_result = curl_exec($curl); curl_close($curl); if ($type == 'shares') { $json = json_decode($curl_result, true); return intval($json[0]['result']['metadata']['globalCounts']['count']); } elseif ($type == '+1s') { libxml_use_internal_errors(true); $doc = new DOMDocument(); $doc->loadHTML($curl_result); $counter=$doc->getElementById('aggregateCount'); return $counter->nodeValue; } } // Get Google+ count. $gplus_count = get_gplus_count($url, $gplus_type); 

В настоящее время у Google нет общедоступного API для получения +1 для URL-адресов. Здесь вы можете подать запрос функции. Вы также можете использовать обратный инженерный метод, упомянутый @DerVo. Имейте в виду, что этот метод может меняться и прерываться в любое время.

Я собрал этот код для чтения счета непосредственно из iframe, используемого социальной кнопкой. Я не тестировал его в массовом масштабе, так что, возможно, вы должны замедлять запросы и / или изменять агент пользователя :). Это мой рабочий код:

 function get_plusone($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://plusone.google.com/_/+1/fastbutton? bsv&size=tall&hl=it&url=".urlencode($url)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $html = curl_exec ($curl); curl_close ($curl); $doc = new DOMDocument(); $doc->loadHTML($html); $counter=$doc->getElementById('aggregateCount'); return $counter->nodeValue; 

}

Используется следующее:

 echo get_plusones('http://stackoverflow.com/'); 

Результат: 3166

Мне пришлось объединить несколько идей из разных вариантов и URL-адресов, чтобы заставить меня работать для меня:

 function getPlusOnes($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://plusone.google.com/_/+1/fastbutton?url=".urlencode($url)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $html = curl_exec ($curl); curl_close ($curl); $doc = new DOMDocument(); $doc->loadHTML($html); $counter=$doc->getElementById('aggregateCount'); return $counter->nodeValue; } 

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

 echo getPlusOnes('http://stackoverflow.com/') 

Благодаря Карди для использования этого подхода, мне просто нужно было получить URL-адрес, который работал на меня …

Я выпустил библиотеку PHP, в которой был получен счет для крупных социальных сетей. В настоящее время он поддерживает Google, Facebook, Twitter и Pinterest.

Используемые методы аналогичны описанным здесь, и библиотека предоставляет механизм кэширования извлеченных данных. В этой библиотеке также есть несколько других приятных функций: возможность установки через Composer, полностью протестированная поддержка HHVM.

http://dunglas.fr/2014/01/introducing-the-socialshare-php-library/