Как извлечь часть URL в PHP, чтобы удалить определенную часть? - PullRequest
4 голосов
/ 20 мая 2010

Итак, у меня есть этот URL в строке:

http://www.domain.com/something/interesting_part/?somevars&othervars

в PHP, как мне избавиться от всего, кроме interesting_part?

Ответы [ 5 ]

5 голосов
/ 20 мая 2010

Попробуйте:

<?php
$url = 'http://www.domain.com/something/interesting_part/?somevars&othervars';

preg_match('`/([^/]+)/[^/]*$`', $url, $m);
echo $m[1];
5 голосов
/ 20 мая 2010

...

$url = 'http://www.domain.com/something/interesting_part/?somevars&othervars';
$parts = explode('/', $url);
echo $parts[4];

Выход:

interesting_part
4 голосов
/ 20 мая 2010

Вы должны использовать parse_url для выполнения операций с URL. Сначала проанализируйте его, затем внесите необходимые изменения, например, взорвав, а затем соедините его вместе.

$uri = "http://www.domain.com/something/interesting_part/?somevars&othervars";
$uri_parts = parse_url( $uri );

/*
you should get:
 array(4) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(14) "www.domain.com"
  ["path"]=>
  string(28) "/something/interesting_part/"
  ["query"]=>
  string(18) "somevars&othervars"
}
*/

...

// whatever regex or explode (regex seems to be a better idea now)
// used on $uri_parts[ "path" ]

...

$new_uri = $uri_parts[ "scheme" ] + $uri_parts[ "host" ] ... + $new_path ... 
1 голос
/ 20 мая 2010

Если интересная часть всегда является последней частью пути:

echo basename(parse_url($url, PHP_URL_PATH));

[+] обратите внимание, что это будет работать только без index.php или любого другого имени файла до ?. Этот будет работать для обоих случаев:

$path = parse_url($url, PHP_URL_PATH);
echo  ($path[strlen($path)-1] == '/') ? basename($path) : basename(dirname($path));
0 голосов
/ 28 сентября 2015

Вот пример использования parse_url() для переопределения определенной части:

<?php
$arr = parse_url("http://www.domain.com/something/remove_me/?foo&bar");
$arr['path'] = "/something/";
printf("%s://%s%s?%s", $arr['scheme'], $arr['host'], $arr['path'], $arr['query']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...