Expandera korta URL:ar
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:
print expand_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
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!
Lego Storm Trooper
Fågel Fenix
Två hyllor på badrummet
Hobbyhörna fixad
Hylla bakom soffan
Modellbygge igen!
Porträtt av u/Flattie-Ratty
Porträtt av u/DangDoood
Buy prints of my maps
Hero Dashboard för Descent
3D-printer
Fältsjukhus 616
Ny kaffemaskin
Porträtt av u/elizabeeeef
Jämförelse 135 mm
Nya objektiv
Porträtt av kompis mamma
Använda utrymmet under trappen
Spelbord
Pimpning av köks-ön
Jag saknar min Dodge!
Acrylic drip