Modellera URL:ar
2013-06-18 -
Jag byggde två funktioner för att plocka isär och skapa URL:ar för en stund sedan. Det var så ofta jag satt och försökte skapa eller tolka dem manuellt så livet blev bra mycket enklare med dessa två funktioner.
<?     function extract_url($string false){         if ($string === false$string $GLOBALS["protocol"] . "://" $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];         $url parse_url($string);         if (!empty($url["query"])){             $url["querystring"] = $url["query"];             parse_str(html_entity_decode($url["query"]), $url["query"]);         }         $url["path"] = preg_replace("!/+!""/"$url["path"]);                  return $url;     } ?>
<?     function create_url($a$onlypath false$encode false){         $url false;         if (!is_array($a))             $url $a;         if (!empty($a["query"])){             if (is_array($a["query"])){                 $a["query"] = array_map(function ($r){                     if (!empty($r))                         return $r;                 }, $a["query"]);                 $a["query"] = http_build_query($a["query"]);             } else {                 parse_str($a["query"], $query);                 $a["query"] = http_build_query($query);             }         }                  if (empty($a["host"]) && !$onlypath){             $a["host"] = $_SERVER["HTTP_HOST"];         }         if (empty($a["scheme"]) && !$onlypath){             $a["scheme"] = (!empty($_SERVER['HTTPS'])) ? 'https' 'http';         }         if (empty($a["path"]) && !empty($a["host"]) && $a["host"] == $_SERVER["HTTP_HOST"]){             $a["path"] = $_SERVER["PHP_SELF"];         }                  #if (!empty($encodeamp)) $a["query"] = preg_replace("/&/", "&amp;", $return);                  $return http_build_url($url$a);         $return preg_replace("/?$/"""$return);         if (!empty($onlypath))             #$return = preg_replace("/^[a-z]{3,5}://[a-z,.,-]+/", "", $return);             $return preg_replace("/^http.*://.*?//""/"$return);                  return $return;     } ?>
Och det är lika enkelt som det ser ut. Det ger snabbåtkomst till ett par av PHP's inbyggda funktioner för att tolka URl:ar och normaliserar det. Enkelt och smidigt.

extract_url()

 
print_r(extract_url("http://sandman.net/index.php?mode=list"));
 
Array ( [scheme] => http [host] => sandman.net [path] => /index.php [query] => Array ( [mode] => list ) [querystring] => mode=list )

create_url()

 
$url = extract_url("http://sandman.net/index.php?mode=list");
$url["query"]["mode"] = "show";
print create_url($url);
 
http://sandman.net/index.php?mode=show
Mer i Tutorials
PHP och BankID
Skapa sn i Photoshop
Modellera URLar
PHP Formatera telefonnummer
Skapa ett Netflixprogram
Expandera korta URLar
Parsea hashtaggar
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!
Lego Storm Trooper
Fågel Fenix
Två hyllor på badrummet
Toalett remake
Hobbyhörna fixad
Hylla bakom soffan
Modellbygge igen!