PHP: URLs mit der Bit.ly API kürzen

Da ich diese Funktion gestern benötigt habe und denke, dass sich der Code problemlos auch für andere Zwecke wiederverwenden lässt, wollte ich heute mal Code an die Hand geben, damit auch ihr in euren PHP-Scripten super einfach die URL-Shortener Dienste von bit.ly nutzen könnt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php

$BITLY_API     = "http://api.bit.ly/v3/shorten?format=txt";
$BITLY_DOMAIN  = "&domain=";
$BITLY_LOGIN   = "&login=";
$BITLY_APIKEY  = "&apiKey=";
$BITLY_LONGURL = "&longUrl=";

$USER_AGENT = "Bit.ly-Shortener 0.0a";

$DOMAIN_BITLY = "bit.ly";
$DOMAIN_JMP   = "j.mp";

function shortenURL($domain, $login, $apiKey, $longUrl) {
  global $BITLY_API;
  global $BITLY_DOMAIN;
  global $BITLY_LOGIN;
  global $BITLY_APIKEY;
  global $BITLY_LONGURL;
  global $USER_AGENT;

  $apiUrl = $BITLY_API .
            $BITLY_DOMAIN . $domain .
            $BITLY_LOGIN . $login .
            $BITLY_APIKEY . $apiKey .
            $BITLY_LONGURL . urlencode($longUrl);

  $options = array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_USERAGENT      => $USER_AGENT,
    CURLOPT_VERBOSE        => 1
  );
  $curl = curl_init($apiUrl);
  curl_setopt_array($curl, $options);
  $url    = trim(curl_exec($curl));
  $header = curl_getinfo($curl);
  curl_close($curl);

  $result = null;
  if ($header["http_code"] == 200) {
    $result = $url;
  }
  return $result;
}

function bitly_shortenURL($login, $apiKey, $longUrl) {
  global $DOMAIN_BITLY;

  return shortenURL($DOMAIN_BITLY, $login, $apiKey, $longUrl);
}

function jmp_shortenURL($login, $apiKey, $longUrl) {
  global $DOMAIN_JMP;

  return shortenURL($DOMAIN_JMP, $login, $apiKey, $longUrl);
}
?>

Interessant für euch sind die beiden Methoden bitly_shortenURL() und jmp_shortenURL(). Beim Aufruf der einen kriegt ihr für eure lange URL eine "bit.ly"-Adresse und beim Aufruf der anderen kriegt ihr eine "j.mp"-Adresse zurückgeliefert. Sollte ein Fehler auftreten, ist der Rückgabewert NULL.

Alles, was euch für die Verwendung nun eventuell noch fehlt, ist ein Account bei bit.ly, den ihr aber problemlos anlegen könnt. Danach kopiert ihr euch noch schnell den Remote-API-Key aus eurem Profil und schon könnt ihr beginnen. 🙂

Bit.ly Remote-API-Key

Ich hoffe, ihr könnt mit dem Tipp ein bisschen was anfangen - mir persönlich wird der Code jedenfalls noch treue Dienste leisten. Er wird z.B. verwendet, um den Störungsmelder @hetznerfail bei Twitter und Identi.ca mit Kurz-URLs zu versorgen. 🙂
Update: Der @hetznerfail-Bot wurde deaktiviert.

Zum Schluss noch etwas Rechtliches:
Der Autor dieses Programms haftet nicht für Schäden an Soft- oder Hardware oder Vermögensschäden, die durch das Benutzen des Programms entstehen, es sei denn, diese beruhen auf einem grob fahrlässigen oder vorsätzlichen Handeln des Autors, seiner Erfüllungsgehilfen oder seiner gesetzlichen Vertreter.
Verkürzte Grüße, Kenny

5 Kommentare » Schreibe einen Kommentar

  1. Komme noch nicht ganz klar. Kann mir vielleicht jemand mal ein Muster machen? Meine url test.de. Mein Account gustav_dergroße, lange url diesisteinelange.de/urlmitvielzuvielinhalt.
    wäre supernett.. danke 🙂

    • Was meinst du mit "Meine url test.de"?

      Angenommen, dein Account ist "gustav_dergroße", dann wäre der Aufruf, um eine bit.ly URL zu erhalten:
      bitly_shortenURL("gustav_dergroße", DEIN_API_KEY, "http://diesisteinelange.de/urlmitvielzuvielinhalt")

      Um eine j.mp URL zu erhalten:
      jmp_shortenURL("gustav_dergroße", DEIN_API_KEY, "http://diesisteinelange.de/urlmitvielzuvielinhalt")

  2. ich finde das script zwar gut, aber ich habe mich von bit.ly verabschiedet. mir ist die ganze situation zu unübersichtlich geworden. ich beführchte einfach einen mörderischen aufwand, falls bit.ly auf einmal nicht mehr zu erreichen ist.

  3. .. kleine Sache: $USER_AGENT ist nicht definiert -> also besser sowas wie: CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'],

    .. trotzdem: schönes Artikel!

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.