Skip to main content

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 or expandera
OAuth fungerar inte
Hur nya iPaden stller till det p webben
Layoutmotor fr Atlas
Build MySQLqueries automatically
Min feed
Rkna tid med PHP
Ostkupa
Stranger Things, säsong 5
Första december!
Nordic: The Musical
Livets träd
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!
The lightsabers are done!
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: Refrigerator and bar stools
Hemma Bäst
Utebar: Cupboard doors
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
Nordic: The Musical
Gudarnas spel
Nordic: The Musical
Oändlig kärlek
Update on the lightsaber project
Hemma Bäst
Skåp till Ute-TV
Thåström i Globen
Bröllopspresent
Födelsedagspresent
Borta Bra
Recension: Jacy's
Thåström
Nordic: The Musical
Kunskapens pris
Nordic: The Musical
Allting börjar alltid någonstans
Borta Bra
Recension: Bohusgården Hotell & Konferens
Borta Bra
Recension: Elite Palace