Hoppa direkt till innehåll

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"]);
    }
    if (!empty($url["path"])){
      $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("/&/", "&", $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
CSS filters for background images
PHP och BankID
Skapa sn i Photoshop
Modellera URLar
PHP Formatera telefonnummer
Skapa ett Netflixprogram
Expandera korta URLar
Recension: Bohusgården Hotell & Konferens
Recension: Elite Palace
Nytt projekt på gång: Ljussablar som ljuskälla
Hemma-Spa klart!
Alien: Romulus
Utebaren klar!
Börjar likna en bar!
Reglar på plats
Rivning pågår!
Mjölner!
Örnen börjar bli redo för Sweden Rock
Utebar!
Mixtejp
Norrsken
Kan ha "råkat" skaffa något på Sci-Fi-mässan
Recension: Steam Hotell
Det börjar ta form med hemma-spa:et
Rostfärg och IKEA-lampa
Create a physical book from my digital book
Survey Island
Someone is trying to sell my map!
Julkalender
Myst book updated
Recension: Yasuragi Ryokan Hanare
Recension: Ad Astra
Ny tatuering - midgårdsormen!
Minnestal till en kaffekopp
Förlovade
Sweden Rock 2023
Ny nummerskylt för huset
Fix i husbilen
Grubbelgubbe
Uppdateringar i verkstaden!
Måla med rostfärg
Vårfix i trädgården
Jung Kook
Pappaskämt och annan humor
Bilder på spelbordet när det används
Använda laserskäraren för att skapa innehål...
Julklappar med laserskärare
Budget-Spa
Nyckelskåp
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