Skip to main content

Expandera korta URL:ar

11/19/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]&quotwink;'), $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
Bygg MySQLqueries automatiskt
Min feed
Rkna tid med PHP
Robotar
Nordic: The Musical
Blodsbröder
Nordic: The Musical
Midgård
Nordic: The Musical
Himlen brinner
Nordic: The Musical
Gudarnas spel
Nordic: The Musical
Oändlig kärlek
Ljussabel-projektet
Hemma Bäst
Skåp till Ute-TV
Thåström i Globen
Födelsedagspresent
Bröllopspresent
Borta Bra
Recension: Jacy's
Thåström
Nordic: The Musical
Kunskapens pris
Nordic: The Musical
Livets träd
Nordic: The Musical
Allting börjar alltid någonstans
Borta Bra
Recension: Bohusgården Hotell & Konferens
Borta Bra
Recension: Elite Palace
Nytt projekt på gång: Ljussablar som ljuskälla
Hemma Bäst
Hemma-Spa klart!
Alien: Romulus
Hemma Bäst
Utebaren klar!
Hemma Bäst
Börjar likna en bar!
Hemma Bäst
Reglar på plats
Hemma Bäst
Rivning pågår!
Mjölner!
Borta Bra
Örnen börjar bli redo för Sweden Rock
Hemma Bäst
Utebar!
Mixtejp
Norrsken
Kan ha "råkat" skaffa något på Sci-Fi-mässan
Borta Bra
Recension: Steam Hotell
Hemma Bäst
Det börjar ta form med hemma-spa:et
Rostfärg och IKEA-lampa
Myst Book
Create a physical book from my digital book
Myst Book
Survey Island
Myst Book
Someone is trying to sell my map!
Julkalender
Myst Book
Myst book updated
Borta Bra
Recension: Yasuragi Ryokan Hanare
Borta Bra
Recension: Ad Astra
Ny tatuering - midgårdsormen!
Minnestal till en kaffekopp
Förlovade
Borta Bra
Sweden Rock 2023
Ny nummerskylt för huset
Fix i husbilen
Grubbelgubbe
Hemma Bäst
Uppdateringar i verkstaden!
Måla med rostfärg