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


Get only filename from url in php without any variable values which exist in the url

我想从php中的URL中获取不带任何$_GET变量值的文件名?

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

我只想从URL中检索learningphp.php

如何做到这一点

我使用了basename()函数,但它也给出了所有的变量值:URL中的learntolearn.php?lid=1348

这应该有效:

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

但是要注意你的URL中的任何恶意部分。

以下步骤显示了有关如何获取文件、带扩展名的文件和不带扩展名文件的全部信息。这个技巧对我很有帮助,希望对你也有帮助。

  $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

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

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

有点类似于Sultan的答案,只是我使用component parse_url参数,只获取路径。

您的URL:

$url = 'http://learner.com/learningphp.php?lid=1348';
$file_name = basename(parse_url($url, PHP_URL_PATH));
echo $file_name;

输出:learningphp.php

如Pekka所说使用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

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

您可以使用,

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

只获取文件名而不获取querystring的另一种方法是使用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'

尝试以下代码:

对于PHP 5.4.0及以上版本:

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

对于PHP版本<5.4.0

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

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

那里的答案假设你知道URL来自一个请求,但很可能不是。一般的答案如下:

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

在这里,它只是走基本路径,然后分开并忽略任何东西?以及之后。

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

使用此函数:

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

可能是我迟到了

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