我想从php中的url获取没有任何$ _GET变量值的文件名吗?
我的网址是http://learner.com/learningphp.php?lid=1348
我只想从网址中检索learningphp.php
?
怎么做?请帮忙。
我使用了basename,但它也提供了所有变量值 - learntolearn.php?lid=1348
,它们位于网址中。
答案 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;
?>
在此示例中,不输出可选的用户名和密码!
答案 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];