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

sql*_*ild 39 php url filenames get

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

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

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

这该怎么做?请帮忙.

我使用了basename,但它也提供了所有变量值 - learntolearn.php?lid=1348它们都在url中.

str*_*str 61

这应该工作:

echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
Run Code Online (Sandbox Code Playgroud)

但要注意URL中的任何恶意部分.

  • 好的,但问号仍然是输出.这对我来说很好:`echo basename($ _ SERVER ['REQUEST_URI'],'?'.$ _ SERVER ['QUERY_STRING']);`. (2认同)

Kha*_*dra 25

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

  $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
Run Code Online (Sandbox Code Playgroud)

  • 我不明白为什么这个有这么多赞成票,它没有回答问题。如果 URL 末尾有查询字符串,它会包含在此处的结果中。OP 想要不带查询字符串的文件名。 (2认同)
  • @jessica我知道这不是问题的实际答案,所以它也不是一个标记的解决方案。人们在搜索我提供的 URL 时会搜索各种类型的 URL,他们会对我的 an 进行投票。 (2认同)

Com*_*eek 19

使用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;
?>
Run Code Online (Sandbox Code Playgroud)

http://codepad.org/NBBf4yTB

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


fox*_*rot 14

最好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);

?>
Run Code Online (Sandbox Code Playgroud)

有点类似于苏丹的答案,除了我使用component parse_url参数,只获得路径.

  • 宾果游戏,这是唯一完全正确的答案 (3认同)

Udh*_*iya 9

您的网址:

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

输出: learningphp.php


SwR*_*SwR 5

您可以使用,

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

echo $directoryURI;
Run Code Online (Sandbox Code Playgroud)


ᴄʀᴏ*_*ᴢᴇᴛ 5

另一种只获取没有查询字符串的文件名的方法是使用 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'
Run Code Online (Sandbox Code Playgroud)


Sul*_*tan 5

尝试以下代码:

对于 PHP 5.4.0 及以上版本:

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

对于 PHP 版本 < 5.4.0

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