Получение базового пути в URL

#php

#php

Вопрос:

код:

 $url = 'https://www.example.com/path/to/product/filename.html';
echo parse_url($url);
  

вывод:

 [scheme] => https
[host] => www.example.com
[path] => /path/to/product/filename.html
  

Как мне получить текущий базовый путь, то есть:

https://www.example.com/path/to/product/

Комментарии:

1. проверьте это: eval.in/664072

2. @ElefantPhace Я OP. И я использовал Google / search, просто мне не понравились решения. Я все еще рад, что спросил и нашел dirname() . И я никогда не беспокоюсь о репутации, кстати.

Ответ №1:

Легко

 $basePath = dirname($url) . '/';
  

Демо ~ https://3v4l.org/XGNDd

Комментарии:

1. универсальное решение 🙂

Ответ №2:

Вы можете использовать pathinfo()

 <?php
$url = 'https://www.example.com/path/to/product/filename.html';
echo "<pre>";
print_r(pathinfo($url));
?>
  

Результат:

 Array
(
    [dirname] => https://www.example.com/path/to/product
    [basename] => filename.html
    [extension] => html
    [filename] => filename
)
  

Вы можете получить путь как:

 <?php
$url = 'https://www.example.com/path/to/product/filename.html';
$info = pathinfo($url);
echo $info['dirname']; //https://www.example.com/path/to/product
?>
  

Ответ №3:

Вы можете использовать эту функцию:

 /**
     * Suppose, you are browsing in your localhost 
     * http://localhost/myproject/index.php?id=8
     */
    function getBaseUrl() 
    {
        // output: /myproject/index.php
        $currentPath = $_SERVER['PHP_SELF']; 

        // output: Array ( [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ) 
        $pathInfo = pathinfo($currentPath); 

        // output: localhost
        $hostName = $_SERVER['HTTP_HOST']; 

        // output: http://
        $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://';

        // return: http://localhost/myproject/
        return $protocol.$hostName.$pathInfo['dirname']."/";
    }
  

или проще с этим:

 echo "http://".dirname($_SERVER['SERVER_NAME']."".$_SERVER['PHP_SELF']);