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

时间:2015-07-19 15:41:40

标签: php preg-replace pathinfo

你好我想从我的网址中删除所有文件名:

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)

3 个答案:

答案 0 :(得分:1)

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

$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;
}

答案 1 :(得分:0)

您可以尝试使用dirname()

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

答案 2 :(得分:0)

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

在这种情况下使用检查来检查给定路径是否是网址