PHP
Как разбить URL-адрес
Поиск…
Вступление
Поскольку вы кодируете PHP, вы, скорее всего, получите свое «я» в позиции, где вам нужно разбить URL на несколько частей. Очевидно, что есть несколько способов сделать это в зависимости от ваших потребностей. Эта статья объяснит вам эти способы, чтобы вы могли найти то, что лучше всего подходит для вас.
Использование parse_url ()
parse_url (): эта функция анализирует URL-адрес и возвращает ассоциативный массив, содержащий любой из различных компонентов URL-адреса, которые присутствуют.
$url = parse_url('http://example.com/project/controller/action/param1/param2');
Array
(
[scheme] => http
[host] => example.com
[path] => /project/controller/action/param1/param2
)
Если вам нужен выделенный путь, вы можете использовать explode
$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
)
)
Если вам нужна последняя часть раздела, вы можете использовать end () следующим образом:
$last = end($url['sections']);
Если URL-адрес содержит GET-вары, вы также можете получить их
$url = parse_url('http://example.com?var1=value1&var2=value2');
Array
(
[scheme] => http
[host] => example.com
[query] => var1=value1&var2=value2
)
Если вы хотите разбить вазы запросов, вы можете использовать parse_str () следующим образом:
$url = parse_url('http://example.com?var1=value1&var2=value2');
parse_str($url['query'], $parts);
Array
(
[var1] => value1
[var2] => value2
)
Использование explode ()
explode (): Возвращает массив строк, каждый из которых является подстрокой строки, сформированной путем разбиения ее на границы, образованные разделителем строк.
Эта функция довольно проста.
$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
)
Вы можете получить последнюю часть URL-адреса, выполнив следующие действия:
$last = end($parts);
// Output: param2
Вы также можете перемещаться внутри массива с помощью sizeof () в сочетании с математическим оператором следующим образом:
echo $parts[sizeof($parts)-2];
// Output: param1
Использование basename ()
basename (): для строки, содержащей путь к файлу или каталогу, эта функция вернет конечный компонент имени.
Эта функция вернет только последнюю часть URL-адреса
$url = "http://example.com/project/controller/action/param1/param2";
$parts = basename($url);
// Output: param2
Если у вашего URL-адреса есть больше вещей, и вам нужно имя dir, содержащее файл, вы можете использовать его с именем dirname () следующим образом:
$url = "http://example.com/project/controller/action/param1/param2/index.php";
$parts = basename(dirname($url));
// Output: param2