Извлечь часть из URL для строки запроса - PullRequest
0 голосов
/ 20 июня 2010

Мне нужна определенная часть 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), хотя.

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

Ответы [ 2 ]

1 голос
/ 20 июня 2010

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

<?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");

?>
1 голос
/ 20 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...