php 从 url 中删除文件名(如果存在)

php remove filename from url if exists

你好,我想从我的 url 中删除所有文件名:

http://website.com/folder1/folder2/filename.php

这是我尝试过的方法:

$file_info = pathinfo('http://website.com/folder1/folder2/filename.php');
echo $file_info['dirname'];

输出 http://website.com/folder1/folder2/ 这是我想要的,但是当我尝试这个时:

   $file_info = pathinfo('http://website.com/folder1/folder2/');
    echo $file_info['dirname'];

它输出http://website.com/folder1/
现在我想要的是,如果 url 包含一个文件名,那么它会被删除,如果 url 只有文件夹,那么什么都不做。
(我不想为此使用 .htaccess)

你可以试试dirname()

echo dirname('http://website.com/folder1/folder2/filename.php');

假设所有文件名都有扩展名:

$url1 = 'http://website.com/folder1/folder2/filename.php';
$url2 = 'http://website.com/folder1/folder2/';

echo removeFilename($url1) . "\n";
echo removeFilename($url2) . "\n";

function removeFilename($url)
{
    $file_info = pathinfo($url);
    return isset($file_info['extension'])
        ? str_replace($file_info['filename'] . "." . $file_info['extension'], "", $url)
        : $url;
}

这是不可能的,因为你无法检查 Whosebug.de/post.new/tero.php 是一个文件名还是一个文件夹...

在这种情况下,使用检查来检查给定路径是否为 url 或