Expandera korta URL:ar
2012-11-19 - 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
Fjällkaffe
1/20 DeLorean Time Machine
Caso Outdoor Cooler
Minikyl Coca Cola
Verktygsvagn med verktyg, 161 delar
CSS filters for background images
Huset ommålat!
Skiss för tatuering
Spelbordet klart
Laser cutting my Myst Island
We Can Do It
Batwing
Elsa
Skaffat husbil
Foton på bilen
Remarkable 2
Ny espressomaskin!
Porträtt av Emma
AtlasCMS och rådande krissituation
Ny bil! Ford Mustang Mach-E GT
Spelbordet, igen
Ny bil beställd
Två månader med Keto
Spelbord v3
Mechanical Age map
More shading and water
Första månaden med Keto
Keto
Fotosession: Tabitha
Utebelysning
Återvinningsskåp
Måla om huset
Byggt hylla till vintunnorna
Dodge RAM
Inline-redigering
Drömmen om ett spa
Dags för carport
Survey Island, what is happening?
Golvprov
Gillestugan uppdaterad!
Spelbord v2
Tre billyhyllor blir två
Gymkort
You can't take the sky from me
Högtalare klara!
eklundh.com tar ned skylten
Högtalare bestämda!
Uppgraderingar biorum
Lord of the Rings-maraton
Ergonomiskt som tusan!