问题
这是一个非常容易理解的问题。
我让用户提交一个 URL,例如“http://example.com/path/filename.html”。
我正在使用 PHP 的dirname()
函数来获取这个 URL 的所谓“基础”。对于上面的示例,这将是“http://example.com/path”。
当用户输入以下内容时,我的问题出现了:
http://example.com/blog
如果您在浏览器中输入上述内容,您将在名为“blog”的文件夹中看到 index.php 或 .html 页面。但是,PHPdirname()
将只返回“http://example.com”。
我不确定它是否认为“博客”是一个无扩展名的文件,如果存在的话,但我真的找不到解决方案。
我尝试过的事情
我首先尝试使用这种快速方法获取 URL 的扩展名:
$url = 'http://example.com/index.php';
$file_extension = end(explode('.', $filename));
然后,我会使用 PHP 检查扩展是否存在empty()
。如果扩展名存在,则意味着在文件夹后输入了一个文件名,例如“http://example.com/path/file.html”,并且dirname()
是完美的。如果扩展名不存在,则没有输入文件并且路径中的最后一项是文件夹,因此它已经是“基础”。
但是,在简单的“http://example.com/path/”的情况下,上面将返回“.com/path/”作为文件扩展名,我们都知道它不存在。在这种情况下,我会使用该dirname()
函数并切断“/path/”。
编辑:
使用的扩展名basename($url)
不起作用,因为如果用户输入“http://example.com”basename()
返回“example.com”,其扩展名应该是“.com”