使用strstr删除URL部分和文件扩展名

时间:2009-11-04 08:57:30

标签: php

我试过函数:strstr,但它有一个问题。假设,URL看起来像:

http://www.example.com/index.php

使用strstr,我可以在'/'之前删除任何内容,但我只想:

索引

,即没有扩展名的文件的实际名称。

5 个答案:

答案 0 :(得分:6)

我强烈建议使用PHP parse_url()函数:

$address = 'http://www.example.com/index.php';
$url = parse_url($address);
echo $url['host'];

没有必要重新发明轮子。

答案 1 :(得分:4)

如果文件类型可以更改,并且您确定没有其他文件类型。在文件名中,例如index.2.php然后你可以使用

$filename = basename('http://www.example.com/index.php');
$filename = substr($filename, 0, strpos($filename, '.'));

答案 2 :(得分:3)

如果它总是以.php结尾,你可以这样做:

basename('http://www.example.com/index.php', '.php')

如果它可以以其他扩展名结尾,您可以执行以下操作:

if (preg_match('#([^/]+)\.\w+$#', 'http://www.example.com/index.php', $matches))
    $basename = $matches[1];

答案 3 :(得分:3)

+1 cletus用于正确工作的正确工具,正确的URL解析器。正则表达式攻击会因各种查询字符串而失败。

然而,这是在这里寻求的最后一条路径而不是主持人。所以:

$url = parse_url($address);
$filename= array_pop(explode('/', $url['path']));
$filestem= explode('.', $filename)[0];

答案 4 :(得分:0)

非常简单,无需太多代码。

只需手动执行即可自动加载

只需写下你的网址

      http://www.example.com/index

它会显示你的文件,因为最后有.php。