我想从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];