PHP
Jak rozbić adres URL
Szukaj…
Wprowadzenie
Gdy kodujesz PHP, najprawdopodobniej znajdziesz się w pozycji, w której musisz podzielić URL na kilka części. Istnieje oczywiście więcej niż jeden sposób, w zależności od potrzeb. W tym artykule wyjaśnimy Ci te sposoby, abyś mógł znaleźć to, co najlepiej Ci odpowiada.
Korzystanie z parse_url ()
parse_url (): Ta funkcja analizuje adres URL i zwraca tablicę asocjacyjną zawierającą dowolny z różnych składników adresu URL, które są obecne.
$url = parse_url('http://example.com/project/controller/action/param1/param2');
Array
(
[scheme] => http
[host] => example.com
[path] => /project/controller/action/param1/param2
)
Jeśli potrzebujesz oddzielonej ścieżki, możesz użyć opcji eksplodowania
$url = parse_url('http://example.com/project/controller/action/param1/param2');
$url['sections'] = explode('/', $url['path']);
Array
(
[scheme] => http
[host] => example.com
[path] => /project/controller/action/param1/param2
[sections] => Array
(
[0] =>
[1] => project
[2] => controller
[3] => action
[4] => param1
[5] => param2
)
)
Jeśli potrzebujesz ostatniej części sekcji, możesz użyć end () w następujący sposób:
$last = end($url['sections']);
Jeśli adres URL zawiera zmienne GET, możesz je również odzyskać
$url = parse_url('http://example.com?var1=value1&var2=value2');
Array
(
[scheme] => http
[host] => example.com
[query] => var1=value1&var2=value2
)
Jeśli chcesz rozbić zmienne zapytania, możesz użyć parse_str () w następujący sposób:
$url = parse_url('http://example.com?var1=value1&var2=value2');
parse_str($url['query'], $parts);
Array
(
[var1] => value1
[var2] => value2
)
Korzystanie z explode ()
explode (): Zwraca tablicę ciągów, z których każdy jest podciągiem ciągu utworzonego przez podzielenie go na granice utworzone przez ogranicznik ciągu.
Ta funkcja jest dość prosta.
$url = "http://example.com/project/controller/action/param1/param2";
$parts = explode('/', $url);
Array
(
[0] => http:
[1] =>
[2] => example.com
[3] => project
[4] => controller
[5] => action
[6] => param1
[7] => param2
)
Możesz pobrać ostatnią część adresu URL, wykonując następujące czynności:
$last = end($parts);
// Output: param2
Możesz także nawigować wewnątrz tablicy za pomocą sizeof () w połączeniu z operatorem matematycznym takim jak ten:
echo $parts[sizeof($parts)-2];
// Output: param1
Używanie basename ()
basename (): Biorąc pod uwagę ciąg znaków zawierający ścieżkę do pliku lub katalogu, funkcja zwróci końcowy składnik nazwy.
Ta funkcja zwróci tylko ostatnią część adresu URL
$url = "http://example.com/project/controller/action/param1/param2";
$parts = basename($url);
// Output: param2
Jeśli w adresie URL znajduje się więcej elementów, a potrzebujesz nazwy katalogu zawierającego plik, możesz użyć go z dirname () w następujący sposób:
$url = "http://example.com/project/controller/action/param1/param2/index.php";
$parts = basename(dirname($url));
// Output: param2