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.
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]"
;'), $string);
Stänger igen trappan med furuskivor mellan varje steg. #trapprenovering
Hmmm, nu börjar plastväxterna tappa löv
Trapprenovering på gång. Allt nedslitet och Tina kör med lackfräsen och jag limmar ekplankor för att skapa trappsteg. Sparar runt 10-15k genom att göra allt själv.
Mattan på hotellet ser ut som en Alien facehugger-ägg
Vår monter på Stadsnätsföreningens årskonferens. Surf’s up!
Mother of Dragons
Maleficent
Ny canvas på gång… vad ska det bli på denna då? Något filmrelaterat…
Nu tror jag tamigtusan hon är klar!
Nu är formen på hornen fixade, samt halslinjen. Ska låta detta torka och sen jobba lite med nacklinjerna och vingarna, sen tror jag den snart kan vara klar
Försöker fixa Maleficenttavlan. Detta kanske kan fungera.
Mother of dragons
Lite imponerad hur mycket Apple Watch kan hålla reda på bär man simmar faktiskt
Får lite välbehövlig hjälp att fixa med elen i verkstaden
Improvisationsteater på Västmanlandsteatern. Lika delar pinsamt och skoj :)
Har ryggskott som börjar bli bättre. Nyser nu på morgonen och det hugger till i ryggen och gör ont som fan. Kollapsar på golvet, och när jag reser mig upp så har jag råkat få igång Siri som tror sig ha hört detta. Ok, det gör ont som fan, men jag är ok, Siri :)
Har en trappa hemma som måste renoveras, menrenoveringskit är dyra som tusan, tanken är att jag ska bygga eget renoveringskit, får se hur det går…
Bakbunden
Även en ordentlig geringsfräs för att kunna bygga hållbara trappnosar
Bakbord
Extrabord till jul
Renoverat vardagsrumsbord
Nattduksbord
PanPastel-porträtt
Crock Pot
PanPastel
Tron för Sigge
Road Trip Italien!
Verkstad Remake
Jonas och Jenna
Brud som chillar
Showing off
Undressing
Touch thyself
Hot Love
Profilporträtt
Resa utan kamera?
Paus
Supernöjd med folieringen!
Bilen ska folieras!
Ny såg
PHP och BankID
Jack Skellington
Verkstadsplaner
Magnettavla
Verandatak och grillhörna!
Vardagsrumsbord
Knivblock
Kökshylla
Ny ikon för karta
PC-bygge
Kerlee 35mm f/1.2
Objektivhylla
Natalie Dormer
Hållare till kattmatsskålar
Hälsningar från Norge
With a little help from my friends...
The Most Incredible Fantasy Maps You've Ever Seen
Cityfestivalen
Mitakon Speedmaster 50mm/f0,95
10 minuter vatten
Daniel & Lenas bröllop
Sony A7R II
Petzval 58 Bokeh Control Art Lens
Scrawlrbox
Nya skärmar till jobbet
Nikon Df - ny leksak