Извлечь часть из URL-адреса для строки запроса

Мне нужна определенная часть URL-адреса.

Пример:

http://www.domain.com/blog/entry-title/?standalone=1 – данный URL.

blog/entry-title должен быть извлечен.

Однако извлечение должно также работать с http://www.domain.com/index.php/blog/[…] в качестве заданного URL-адреса.

Этот код предназначен для системы управления контентом.


Я уже придумал следующее:

 function getPathUrl() { $folder = explode('/', $_SERVER['SCRIPT_NAME']); $script_filename = pathinfo($_SERVER['SCRIPT_NAME']); // supposed to be 'index.php' $request = explode('/', $_SERVER['REQUEST_URI']); // first element is always "" array_shift($folder); array_shift($request); // now it's only the request url. filtered out containing folders and 'index.php'. $final_request = array_diff($request, array_intersect($folder, $request)); // the indexes are mangled up in a strange way. turn 'em back $final_request = array_values($final_request); // remove empty elements in array (caused by superfluent slashes, for instance) array_clean($final_request); // make a string out of the array $final_request = implode('/', $final_request); if ($_SERVER['QUERY_STRING'] || substr($final_request, -1) == '?') { $final_request = substr($final_request, 0, - strlen($_SERVER['QUERY_STRING']) - 1); } return $final_request; } 

Однако этот код не заботится о аргументах в конце URL-адреса (например, ?standalone=1 ). Тем не менее, он работает для якорей ( #read-more ).

Спасибо, тонны парней и получайте удовольствие, крутя ваши мозги. Возможно, мы сможем сделать это дерьмо с регулярным выражением.

Есть много примеров и информации о том, чего вы хотите:

http://php.net/manual/en/function.parse-url.php

Это должно делать то, что вам нужно:

 <?php function getPath($url) { $path = parse_url($url,PHP_URL_PATH); $lastSlash = strrpos($path,"/"); return substr($path,1,$lastSlash-1); } echo getPath("http://www.domain.com/blog/entry-title/?standalone=1"); ?>