Contributions API

pingback_discover

Definition

pingback_discover($target)
contributions/pingback/pingback.module, line 332

Description

Discover a pingback server with pingback autodiscovery schemes.

Parameters

$target the absolute URL to search for its server. This should have passed check_url() first.

Code

<?php
function pingback_discover($target) {
  $server = '';
  //#1: send a HEAD to check for X-Pingback header
  $r = drupal_http_request($target, array(), 'HEAD');
  //dpm($r);
  if (!$r->error) {
    if (is_array($r->headers) && isset($r->headers['X-Pingback'])) {
      $server = $r->headers['X-Pingback'];
    }
    else {
      //#2: search for <link rel="pingback" href="(server)" /> tags
      $get = drupal_http_request($target);
      if (!$get->error) {
        //dpm($get->data);
        //this regexp is the one provided in the spec
        if (preg_match('#<link rel="pingback" href="([^"]+)" ?/?>#', $get->data, $matches)) {
          $server = $matches[1];
        }
        
      }
    }
  }
  if (!empty($server)) {
    return check_url($server);
  }
  else return '';
}
?>