Modellera URL:ar
2013-06-18 -
0
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$string $GLOBALS["protocol"] . "://" $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];         $url parse_url($string);         $url["querystring"] = $url["query"];         parse_str($url["query"], $url["query"]);         $url["path"] = preg_replace("!/+!""/"$url["path"]);                  return $url;     } ?>
<?     function create_url($a$onlypath false$encodeamp false){         if (!is_array($a)) $url $a;         if (is_array($a["query"])) {             $a["query"] = array_map(function ($r){                 if ($r) return $r;             }, $a["query"]);             $a["query"] = http_build_query($a["query"]);         }         if (!$a["host"]) $a["host"] = $_SERVER["HTTP_HOST"];         if (!$a["scheme"]) $a["scheme"] = "http";         if (!$a["path"]) $a["path"] = $_SERVER["PHP_SELF"];         #if ($encodeamp) $a["query"] = preg_replace("/&/", "&amp;", $return);         $return http_build_url($url$a);         $return preg_replace("/?$/"""$return);         if ($onlypath$return preg_replace("/^[a-z]{3,5}://[a-z,.,-]+/"""$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
Tutorials
#inlineditbutton