问题
I need to find the file name of the file I've included without the GET parameters.
e.g.: if the current URL is http://www.mysite.com/folder/file.php?a=b&c=d , i want file.php returned
what I have found:
basename($_SERVER['REQUEST_URI'])
which returns:
file.php?a=b&c=d
in my case: I'm using the filename in a form in the section for my cart, so at the moment each time you click the 'reduce number of product' button it adds the GET params of the form (productId and action) to the end of the URL: file.php?a=b&c=d?a=b&c=d?a=b&c=d?a=b&c=d...
I know I could simply explode or something similar on '?'
$file = explode("?", basename($_SERVER['REQUEST_URI']))
and use the first part of the array, but I seem to recall something easier, however cannot locate the code again..
I'm new to PHP so explanation on your code would be appreciated.
Thanks, V
回答1:
You can make use of parse_url. In your case you could use:
$url = parse_url($url, PHP_URL_PATH);
To get only the file name you can do something like this:
$url = explode('/', parse_url($url, PHP_URL_PATH));
$url = end($url);
回答2:
Maybe you are looking for $_SERVER['PHP_SELF']
.
Please notice that it has a '/' char in the beginning.
回答3:
Have you tried a simple basename(__FILE__);
? This will get you the filename of where the code is located, as it is on disk.
For getting the requested file, you can use basename($_SERVER['SCRIPT_NAME']);
. This will always get the file that was requested, rather than the file that the code is contained within.
回答4:
basename($_SERVER['SCRIPT_NAME']);
This will do it.
In addition it is always good to know some given variables. The following snippet in a php file is really useful.
<pre><?php
print_r($_SERVER);
?></pre>
回答5:
basename(parse_url($url,PHP_URL_PATH));
parse_url($url,PHP_URL_PATH) erase params. basename() get filename of path.
回答6:
Take a look at some of the other values in $_SERVER
.
Maybe $_SERVER["PHP_SELF"]
or $_SERVER["SCRIPT_NAME"]
will return what you want.
回答7:
This is the closest I've found. Here's how I did it:
$url = parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH);
$url = explode('/', parse_url($url, PHP_URL_PATH));
$url = end($url);
error_log($url);
回答8:
The best solution for me:
$file = basename(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH));
回答9:
The only way that you get the name of the script without the parameters is making a POST request
来源:https://stackoverflow.com/questions/5870087/how-do-i-get-the-filename-without-the-params