Hoppa direkt till innehåll

Expandera korta URL:ar

19 nov. 2012 - php, shorturl, short link, expanding url
När man jobbar med att tolka Twitterstatusar och liknande så inser man snabbt att man ofta hanterar korta URL:ar, alltså en URL som används som en redirect till en annan URL för att bli kortare för att rymmas i en statusuppdatering på ett snyggt sätt.
Men i regel så vill jag inte hantera korta url:ar, utan vill ha originaladressen, så jag skrev en liten funktion för att expandera dessa URL:ar som ser ut så här:
function expand_url($url){
    $ourl = $url;
    if ($return = get_cache_data($url, "1 month", "AAA")) return $return;
    while (1){
      $nr++;
      if ($nr > 10){
        return $url;
      }
      if (strstr($url, "www")) return $url;
      if ($redirect = get_url_redirect($url)){
        $url = $redirect;
      } else {
        save_cache_data($ourl, $url, "AAA");
        return $url;
      }
    }
  }
  function get_url_redirect($url){
    $curl = shell_exec($GLOBALS["curl_path"] . " -I -# '" . addslashes($url) . "'");
    if (preg_match("/Location: (.*?)\s/", $curl, $m)){
      return $m[1];
    } else {
      return false;
    }
  }
Så, vad den gör är att den loop:ar tills den har hittat originaladressen (eller högst tio gånger). Detta går inte snabbt, eftersom den kontaktar servarna för att hitta en "Location:" header och sedan kontrollera även den tills dess att sidan inte har någon Location-header. Så för en adress som är "förkortad" endast en gång så görs två förfrågningar, om inte adressen har innehåller "www", vilket i regel betyder att adressen inte är en förkortad version.
Så här använder du den:
printexpand_url("http://flpbd.it/hNFJN");
Vill du byta ut alla adresser i en textsträng mot eventuella längre versioner av dem, använd då detta:
$string= preg_replace_callback("!(http://[^\s]*)!", create_function('$matches', 'return expand_url("$matches[0]"wink;'), $string);
Kanske någon som har användning för detta?
Mer i Tutorials
Modellera URLar
PHP Formatera telefonnummer
Skapa ett Netflixprogram
Expandera korta URLar
Parsea hashtaggar
Repeterande schema i iCal med AppleScript
Vlj datumspann med jQuery
Nyckelord: php, shorturl, short link, expanding url eller expandera
OAuth fungerar inte
Hur nya iPaden stller till det p webben
Layoutmotor fr Atlas
Bygg MySQLqueries automatiskt
Min feed
Rkna tid med PHP
Nordic: The Musical
Första skiss


En första skiss på Balders fall. Detta är Freja efter att Loke lurat Höder att skjuta Balder. Hela stycket kommer vara mycket längre. Men som sagt, en skiss
Nordic: The Musical
Studiomusik i stort sett klar för Himlen Brinner


Nu är Himlen Brinner uppdaterad med helt ny studiomusik av Emil. Vi har jobbat fram ett sound som känns passande för Tor och Mjölner och lagt in saker som åsknedslag och hammarslag på städ för att accentuera vissa delar av stycket.
Rumpa
Uppdaterade skyltar hemma
En söt liten skärbräda
eklundh.com
Atlas Embed
Matat Sigge?
Ordning och reda i legobyggandet
"Flärp" till ismaskinen
God jul!
Hemma Bäst
Fondvägg för gillestugan
Tagalot
E-ink screen
Garbage Pail Kids
Hemma Bäst
Nya lådor i kontoret
Ostkupa
Stranger Things, säsong 5
Första december!
Myst Book
Web versions of the journals
Predator: Badlands
Myst Book
Selenitic Age
Ny kamera, gammal glöd
Tekoppen
Årets Halloweenfest var mycket lyckad!
Porträtt av t-o-m-u-s-a
Porträtt av u/arielgirle
Profilporträtt
GameConnect
Ny PC!
50 år
Hemma Bäst
Garageuppfart för husbil: Uppfarten är klar!
Ny kamera: Nikon Zf
Hemma Bäst
Garageuppfart för husbil: Massa grus!
Ljussablarna är klara!
Hemma Bäst
Garageuppfart för husbil: Lagt ut plattor och skyfflat makadam
Hemma Bäst
Garageuppfart för husbil: Grävt och klart!
Hemma Bäst
Pooltak
Nordic: The Musical
Valkyrior
Tekoppen
Kräftskiva och eldfest på Tekoppen!
Lord of the Rings timeline
Alien Timeline
Borta Bra
Snart är det Medeltidsveckan!
Hemma Bäst
Utebar: Pergola
Hemma Bäst
Utebar: Kylskåp och barstolar
Hemma Bäst
Utebar: Skåpdörrar
Nordic: The Musical
Lokes Vrede
Hemma Bäst
Garageuppfart för husbil: Garageuppfart för husbil!
Arkad- och flipperkabinett
Robotar
Nordic: The Musical
Blodsbröder
Nordic: The Musical
Midgård
Nordic: The Musical
Himlen brinner
Nordic: The Musical
Orosmoln i Asgård