从php中的url获取只有文件名而没有url中存在的任何变量值

时间:2011-10-21 16:17:59

标签: php url get filenames

我想从php中的url获取没有任何$ _GET变量值的文件名吗?

我的网址是http://learner.com/learningphp.php?lid=1348

我只想从网址中检索learningphp.php

怎么做?请帮忙。

我使用了basename,但它也提供了所有变量值 - learntolearn.php?lid=1348,它们位于网址中。

13 个答案:

答案 0 :(得分:50)

这应该有效:

echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);

但要注意网址中的任何恶意内容。

答案 1 :(得分:18)

使用parse_url(),如佩卡说:

<?php
$url = 'http://www.example.com/search.php?arg1=arg2';

$parts = parse_url($url);

$str = $parts['scheme'].'://'.$parts['host'].$parts['path'];

echo $str;
?>

http://codepad.org/NBBf4yTB

在此示例中,不输出可选的用户名和密码!

答案 2 :(得分:16)

以下步骤显示了有关如何获取文件,带扩展名的文件,无扩展名的文件的完整信息。这项技术对我很有帮助。希望它对你也有帮助。

  $url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png';
        $file = file_get_contents($url); // to get file
        $name = basename($url); // to get file name
        $ext = pathinfo($url, PATHINFO_EXTENSION); // to get extension
        $name2 =pathinfo($url, PATHINFO_FILENAME); //file name without extension

答案 3 :(得分:11)

最好使用parse_url仅检索路径,然后仅使用basename获取文件名。这样我们也避免了查询参数。

<?php
$url = 'http://www.example.com/image.jpg?q=6574&t=987'
$path = parse_url($url, PHP_URL_PATH);
echo basename($path);
?>

有点类似于Sultan answer,除了我正在使用component parse_url参数,才获得路径。

答案 4 :(得分:6)

您的网址:

<p>
<input type="file" onchange="showResult( this.files[0]);" accept="image/*">
<div>Data URL:</div>
<div id="result"></div>

输出: learningphp.php

答案 5 :(得分:5)

你可以使用,

$directoryURI =basename($_SERVER['SCRIPT_NAME']);

echo $directoryURI;

答案 6 :(得分:3)

另一种只获取没有查询字符串的文件名的方法是使用parse_url和basename函数:

$parts = parse_url("http://example.com/foo/bar/baz/file.php?a=b&c=d");
$filename = basename($parts["path"]); // this will return 'file.php'

答案 7 :(得分:2)

请尝试以下代码:

对于PHP 5.4.0及更高版本:

$filename = basename(parse_url('http://learner.com/learningphp.php?lid=1348')['path']);

对于PHP版本&lt; 5.4.0

$parsed = parse_url('http://learner.com/learningphp.php?lid=1348');
$filename = basename($parsed['path']);

答案 8 :(得分:1)

$url = "learner.com/learningphp.php?lid=1348";
$l = parse_url($url);
print_r(stristr($l['path'], "/"));

答案 9 :(得分:1)

$filename = pathinfo( parse_url( $url, PHP_URL_PATH ), PATHINFO_FILENAME ); 

使用parse_url从URL中提取路径,然后pathinfo从路径中返回文件名

答案 10 :(得分:1)

那里的答案假设您知道 URL 来自请求,但很可能不是。一般的答案是这样的:

$basenameWithoutParameters = explode('?', pathinfo($yourURL, PATHINFO_BASENAME))[0];

这里它只需要基本路径,然后分开并忽略任何东西?和之后。

答案 11 :(得分:0)

使用此功能:

function getScriptName()
{
    $filename = baseName($_SERVER['REQUEST_URI']);
    $ipos = strpos($filename, "?");
    if ( !($ipos === false) )   $filename = substr($filename, 0, $ipos);
    return $filename;
}

答案 12 :(得分:0)

可能我迟到了

$e = explode("?",basename($_SERVER['REQUEST_URI']));
$filename = $e[0];