pingback_discover($target)
contributions/pingback/pingback.module, line 332
Discover a pingback server with pingback autodiscovery schemes.
$target the absolute URL to search for its server. This should have passed check_url() first.
<?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 '';
}
?>